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

Daten Aktualisieren by Join

Dieses Thema im Forum "SQLite" wurde erstellt von xxMoritzxx, 5 Juli 2019.

  1. xxMoritzxx

    xxMoritzxx Neuer Benutzer

    Hallo,

    ich möchte 3 Tabell Joinen, wobei dir 3. am Ende nur ein paar wenige Einträge der Vorherigen 2 Überschreiben, bzw. ersetzen soll.

    Das Problem ist wie folgt:
    Tabelle1: ID, NAME, Alter
    Tabelle2, NAME, Wohnort
    Tabelle3, Name, Alter, Wohnort

    Die Idee ist, das in Tabelle 3, gespeicher wird, ab welchem Alter die Person den Wohnort gewechselt hat.

    In Tabelle 1 steht jeder Name mehrmals mit verschiedenen Altern drin. Nun möchte ich sagen, dass Nach dem Tabelle 1 und 2 gemerged wurden, Der Wohnort von "NAME" überall dort durch Wohnort aus Tabelle 3 ersetzt wird wo Alter (Tabelle3) Größer ist als Alter (Tabelle 1).
    Es wäre einfach zu lösen, wenn ich einfach einen Table erstellen würde mit Join 1 und 2 und den dannmit 3 updaten würde.
    Ich würde as ergebniss aber gerne mit einer Select abfrage erhalten.

    Hat hier jemand eine IDEE ?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Das Tabellendesign ist gruselig, an Deiner Stelle würde ich das jetzt entsorgen...
     
  3. xxMoritzxx

    xxMoritzxx Neuer Benutzer

    Danke für die hilfe :D
    ist auch nur ein beispiel.. es geht einfach darum ob es einen JOIN befehl gibt der mit 2 tabellen joint und dabei in einer reihe bestimmt werte überschreiben kann
     
  4. akretschmer

    akretschmer Datenbank-Guru

    gut, dann zeig ich auch ein Beispiel...

    Code:
    test=# select * from t1;
     id | val
    ----+-----
      1 |  10
      2 |  20
      4 |  40
    (3 rows)
    
    test=*# select * from t2;
     id | val
    ----+-----
      1 |   1
      3 |   3
      4 |   
    (3 rows)
    
    test=*# select * from t3;
     id | val
    ----+-----
      1 |   
      2 |   
      3 |   
      4 |   
    (4 rows)
    
    test=*# update t3 set val = coalesce(t1.val +t2.val,0) from t1 left join t2 on t1.id=t2.id where t3.id=t1.id or t3.id=t2.id;
    UPDATE 3
    test=*# select * from t3;
     id | val
    ----+-----
      3 |   
      1 |  11
      2 |   0
      4 |   0
    (4 rows)
    
     
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