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

Hilfe bei SQL-Aktualisierungsabfrage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von daya166, 1 Juni 2018.

  1. daya166

    daya166 Neuer Benutzer

    Hallo,
    momentan muss ich ein Projekt machen, indem Datenbanken benutzt werden, wobei ich jedoch ein Problem habe. Das Problem liegt darin allgemeine, einzelne Aktualisierungen durchzuführen, ohne spezielle Beding- ungen. Ich schildere hier das Problem anhand meiner Tabelle:

    Bewohner_ID Beruf Einkommen
    1 Arbeitslos 0
    2 Arbeitslos 0
    3 Arbeitslos 0
    4 Arbeitslos 0

    Ich möchte per ButtonClick (Lazarus) Einträge aktualisieren. In dem Fall möchte ich auf ButtonClick nur einen
    Bewohner, welcher arbeitslos ist, den Beruf 'Holzfäller' zuweisen. Ich weiß aber nicht, wie das in SQL formulieren kann. Bisher habe ich es so versucht, jedoch ohne Erfolg.

    UPDATE tblbewohner set Beruf = 'Holzfäller' where ???;

    Ich hoffe jemand kann mir bei meinem Problem behilflich sein.
    Mit freundlichen Grüßen
    ein Informatik Schüler
     
  2. akretschmer

    akretschmer Datenbank-Guru

    jeder Datensatz sollte eine eindeutige ID oder einen anderen eindeutigen Schlüssel haben - einen PRIMARY KEY. Diesen kannst Du dann im UPDATE verwenden.

    Also, in Deinem Falle: WHERE Bewohner_ID = 1, wenn es dieser denn sein soll.
     
  3. daya166

    daya166 Neuer Benutzer

    Hallo,
    danke für die schnelle Antwort. Allerdings ist dies nicht mein Problem.
    Was ich meine ist, einem einzelnen, arbeitslosen Bewohner den Beruf Holzfäller zuzuweisen,
    ohne die ID angeben zu müssen. Also per ButtonClick wird automatisch ein arbeitsloser Bewohner
    einem Beruf zugewiesen.

    MfG
     
  4. akretschmer

    akretschmer Datenbank-Guru

    ah so...

    Code:
    test=# create table daya166(id serial primary key, beruf text default 'Arbeitslos', Einkommen int default 0);
    CREATE TABLE
    test=*# insert into daya166 select * from generate_series(1,4) s;
    INSERT 0 4
    test=*# select * from daya166;
     id |   beruf    | einkommen
    ----+------------+-----------
      1 | Arbeitslos |         0
      2 | Arbeitslos |         0
      3 | Arbeitslos |         0
      4 | Arbeitslos |         0
    (4 Zeilen)
    
    test=*# with id as (select min(id)  from daya166 where beruf = 'Arbeitslos') update daya166 set beruf = 'Holzfäller' from id where id = id.min;
    UPDATE 1
    test=*# select * from daya166;
     id |   beruf    | einkommen
    ----+------------+-----------
      2 | Arbeitslos |         0
      3 | Arbeitslos |         0
      4 | Arbeitslos |         0
      1 | Holzfäller |         0
    (4 Zeilen)
    
    test=*# with id as (select min(id)  from daya166 where beruf = 'Arbeitslos') update daya166 set beruf = 'Holzfäller' from id where id = id.min;
    UPDATE 1
    test=*# select * from daya166;
     id |   beruf    | einkommen
    ----+------------+-----------
      3 | Arbeitslos |         0
      4 | Arbeitslos |         0
      1 | Holzfäller |         0
      2 | Holzfäller |         0
    (4 Zeilen)
    
    test=*# with id as (select min(id)  from daya166 where beruf = 'Arbeitslos') update daya166 set beruf = 'Holzfäller' from id where id = id.min;
    UPDATE 1
    test=*# select * from daya166;
     id |   beruf    | einkommen
    ----+------------+-----------
      4 | Arbeitslos |         0
      1 | Holzfäller |         0
      2 | Holzfäller |         0
      3 | Holzfäller |         0
    (4 Zeilen)
    
    test=*# with id as (select min(id)  from daya166 where beruf = 'Arbeitslos') update daya166 set beruf = 'Holzfäller' from id where id = id.min;
    UPDATE 1
    test=*# select * from daya166;
     id |   beruf    | einkommen
    ----+------------+-----------
      1 | Holzfäller |         0
      2 | Holzfäller |         0
      3 | Holzfäller |         0
      4 | Holzfäller |         0
    (4 Zeilen)
    
    test=*# with id as (select min(id)  from daya166 where beruf = 'Arbeitslos') update daya166 set beruf = 'Holzfäller' from id where id = id.min;
    UPDATE 0
    test=*#
    
    ist jetzt mit PostgreSQL gemacht, mußt an MySQL etwas anpassen.
     
  5. daya166

    daya166 Neuer Benutzer

    Ich kriege es irgendwie nicht gebacken, das mit MySQL anzupassen,
    habe ständig irgendwelche Syntaxfehler und weiß nicht wie ich diese beheben soll.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    einfache Lösung: auf PostgreSQL umsteigen ;-)

    Alternativ: Subselect, um eine ID zu erhalten (LIMIT 1), wo derzeit noch Beruf = Arbeitslos ist. Gib Dir Mühe!
     
  7. daya166

    daya166 Neuer Benutzer

    Okay,
    leider kann ich nicht für das Projekt auf PostgreSQL umsteigen, danke dennoch für Deine Hilfe.
    Ich versuche weiterhin das Problem zu lösen.

    MfG
     
  8. akretschmer

    akretschmer Datenbank-Guru

    nu stell Dich mal nicht so an ...

    Code:
    test=# create table daya166(id serial primary key, beruf text default 'Arbeitslos', Einkommen int default 0);
    CREATE TABLE
    test=*# insert into daya166 select * from generate_series(1,4) s;
    INSERT 0 4
    test=*# select * from daya166;
     id |   beruf    | einkommen
    ----+------------+-----------
      1 | Arbeitslos |         0
      2 | Arbeitslos |         0
      3 | Arbeitslos |         0
      4 | Arbeitslos |         0
    (4 Zeilen)
    
    test=*# update daya166 set beruf = 'Holzfäller' where id = (select min(id) from daya166 where beruf = 'Arbeitslos');
    UPDATE 1
    test=*# select * from daya166;
     id |   beruf    | einkommen
    ----+------------+-----------
      2 | Arbeitslos |         0
      3 | Arbeitslos |         0
      4 | Arbeitslos |         0
      1 | Holzfäller |         0
    (4 Zeilen)
    
    test=*# update daya166 set beruf = 'Holzfäller' where id = (select min(id) from daya166 where beruf = 'Arbeitslos');
    UPDATE 1
    test=*# select * from daya166;
     id |   beruf    | einkommen
    ----+------------+-----------
      3 | Arbeitslos |         0
      4 | Arbeitslos |         0
      1 | Holzfäller |         0
      2 | Holzfäller |         0
    (4 Zeilen)
    
    test=*#
    
     
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