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

Update mit Select verbinden?

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von sqlnoob, 11 September 2013.

  1. sqlnoob

    sqlnoob Neuer Benutzer

    Ich muss hier ein Update auf eine Tabelle machen, die Daten kommen aus drei anderen Tabellen - wie geht das genau?

    UPDATE zieltabelle
    SET feld = (Ergebnis von einem SELECT über drei Abfragetabellen)

    Den Select über die drei Tabellen habe ich, der funktioniert.
    Gejoined werden kann über eine id die sowohl in der Zieltabelle vorhanden ist wie in einer der drei Abfragetabellen.

    Hilfe.... :confused:
     
  2. ukulele

    ukulele Datenbank-Guru

    Code:
    UPDATE    zieltabelle
    SET        zielwert = (    SELECT    q.quellwert
                            FROM    quelltabelle q
                            WHERE    q.id = zieltabelle.id )
    Wichtig ist das man die Tabelle im Update-Statement nicht mit einem Alias belegen kann, im Select aber sehr wohl. Sind also beide Tabellen die selben muss man im Select ein einen Alias für den Tabellennamen vergeben.
     
    sqlnoob gefällt das.
  3. sqlnoob

    sqlnoob Neuer Benutzer

    So einfach ist das? Mann, da bin ich schön auf der leitung gestanden!
    Danke!!!!
     
  4. sqlnoob

    sqlnoob Neuer Benutzer

    Nur eine Sorge hab ich noch: @ukulele

    werden wirklich nur Datensätze geändert, die auch in dem Select drin sind? Das sind nämlich nur ein paar hundert die im Ergebnis vom Select drin stehen, in der Tabelle sind aber ein paar Millionen Datensätze drin und die will ich bei gott nicht verändern!
     
  5. ukulele

    ukulele Datenbank-Guru

    Nein. Um Daten auszuschließen solltest bzw. musst du die WHERE Bedingung benutzen. Auch da kann man einen Subselect verwenden falls er denn nötig ist. Ohne WHERE Bedingung aktualisierst du definitiv die ganze Tabelle.

    Dieser kann in der WHERE Bedingung auch mehrere Werte beinhalten z.B. mit
    Code:
    WHERE id IN ( SELECT id FROM tabelle )
    Wenn du aber eine Spalte = ( SELECT wert... setzt, darf dieser Subselect pro Eintrag immer nur ein Ergebnis liefern.
     
    sqlnoob gefällt das.
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