Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MySQL Query Hilfe benötigt :)

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Jeazyee, 28 Februar 2015.

  1. Jeazyee

    Jeazyee Benutzer

    Hey,

    ich versuche gerade von meiner DB "login" die Tabelle "account" zu öffnen, und da aus der Spalte "name" einen %name% zu suchen, und wenn der gefunden wurde soll aus der Reihe wo der %name% drin steht in der Spalte "punkte" dem bereits bestehendem Wert der Wert %pluspunkte% hinzugefügt bzw. addiert werden.

    Hört sich kompliziert an aber ist es für euch bestimmt nicht, ich weiß leider nicht wie ich vorgehen soll, da ich in dem Gebiet ein kompletter Anfänger bin.

    Hier mal mein Ansatz:

    Code:
    SELECT * FROM account WHERE name LIKE '%name%'
    weiter wie so schaff ichs nicht hoffe ihr könnt mir weiterhelfen :)

    Grüße Jeazyee
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Ja. Geht via UPDATE. Hier die Syntax:

    Code:
    test=# \h update
    Command:  UPDATE
    Description: update rows of a table
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
      SET { column_name = { expression | DEFAULT } |
      ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]
      [ FROM from_list ]
      [ WHERE condition | WHERE CURRENT OF cursor_name ]
      [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
    
    Ist in MySQL vermutlich ähnlich.

    Code:
    update <tabelle> set <spalte> = <spalte> + <wert> where <andere_spalte> = 'suchwert'
    
    Das anzupassen überlasse ich Dir zur Übung. Sollst ja auch was lernen.
     
  3. Jeazyee

    Jeazyee Benutzer

    Danke für die Antwort, hier mein Versuch:

    Code:
    UPDATE account SET punkte = punkte + '15' where name = 'testacc'
    hab es mehrmals probiert aber hat leider keine punkte hinzugefügt bzw. nichts gemacht -.-
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Auf was steht denn punkte jetzt? Laß mich raten: auf NULL. Ich schenke Dir ein COALESCE.

    Code:
    test=*# select null + 1;
     ?column?
    ----------
    
    (1 row)
    
    Time: 0,138 ms
    test=*# select coalesce(null,0) + 1;
     ?column?
    ----------
      1
    (1 row)
    
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Davon abgesehen: wenn die Punkte-Spalte ein INT ist (was ich vermute), dann macht es keinen Sinn, da einen String zu addieren, auch wenn es vermutlich automatisch passend gecastet wird.
     
  6. Jeazyee

    Jeazyee Benutzer

    Der test hat bereits 20Punkte jetzt sollen ihm 15 hinzugefügt werden

    Code:
    USE login; 
    UPDATE account SET punkte = punkte + '15' where name = 'test';
    das gebe ich ein und dann kommt der Fehler:

    Code:
    1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE account SET punkte = punkte + '15' where name = 'test'' at line 3
     
  7. Jeazyee

    Jeazyee Benutzer

    Ja die Spalte ist ein int also wie soll ich verfahren ?
     
  8. akretschmer

    akretschmer Datenbank-Guru


    Dann ist da wohl was kapott...

    Code:
    test=*# create table account(name text, punkte int);
    CREATE TABLE   
    Time: 14,420 ms
    test=*# insert into account values ('test', 0);
    INSERT 0 1
    Time: 0,393 ms
    test=*# insert into account values ('test2', 20);
    INSERT 0 1
    Time: 0,248 ms
    test=*# select * from account ;
     name  | punkte
    -------+--------
     test  |  0
     test2 |  20
    (2 rows)
    
    Time: 0,205 ms
    test=*# update account set punkte = punkte + 10 where name = 'test';
    UPDATE 1
    Time: 0,321 ms
    test=*# select * from account ;
     name  | punkte
    -------+--------
     test2 |  20
     test  |  10
    (2 rows)
    
    Time: 0,188 ms
    test=*# rollback;
    ROLLBACK
    
     
  9. akretschmer

    akretschmer Datenbank-Guru

    die ' weglassen.
     
  10. Jeazyee

    Jeazyee Benutzer

    das mit den 'weglassen war irgendwie der Knackpunkt, jetzt funktioniert alles genauso, wie es sein soll!
    Vielen Dank!
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden