SQL Update über mehrere Tabellen?

Hallo,

ich möchte Artikel über mehrere Tabellen updaten und suche nach der korrekten Syntax…

Tabelle_A: ID (Zahl) … Artikelnr (Zahl) …
Tabelle_B: ID (Zahl) … Menge (Zahl) …
Tabelle_C: Menge (Zahl) … Artikelnr (Zahl) …

Die Tabellen (hier nur ein Ausschnitt der wichtigsten Felder) liegen in einer Datenbank.

Mein Versuch:

UPDATE Tabelle_C SET Menge = xyz WHERE ID(Tabelle_A) = 3748

So klappt es natürlich nicht, ich brauch eine Art Querverweis denn ich will beim Update mit einem Wert (ID aus Tabelle_A) vergleichen obwohl ich nur die Artikelnr in dieser Tabelle habe…
D.h. meine Abfrage müßte nach dem WHERE in Tabelle_A die passende ID zur Artikelnummer raussuchen, geht sowas???

Besten Dank im Voraus!
Thomas

Hallo Thomas,
mich würde erst interessieren

  • welche Datenbank ist das
  • Tabellenstruktur

für die Tabellen, die Du beschreibst, könnte der Befehl so aussehen:
UPDATE „T_C“
set „menge“ = xxx
from „T_C“ join „T_A“ on T_C.ArtikelNR = T_A.ArtikelNR and T_A.ID = yyy
;

Ich gebe aber zu bedenken, dass die Struktur für mich sehr fragwürdig ist.
Gruß

Das Zauberwort heisst : 2. Normalform.

  1. Tabelle_A :
    ID | Artikelnummer | Name | …

  2. Tabelle_B :
    ID | ID_Tabelle_A | Menge | …

* Select ID FROM Tabelle_a WHERE …
* UPDATE Tabelle_B SET Menge=[Zahl] WHERE ID_Tabelle_A=ID {vom vorhergehenden Select}

Bei der Abfrage gibt es auch 2 Möglichkeiten :

  1. SELECT * FROM Tabelle_A , Tabelle_B
    WHERE Tabelle_A.ID=Tabelle_B.ID_Tabelle_A
    AND Tabelle_A.???=???

etc.

Ich hoffe ich konnt helfen.

Gruß

Marcus

Hallo,
ich schlage folgendes vor:
UPDATE Tabelle_C SET Menge = xyz WHERE ID = (select id from Tabelle_a where id = 3748);
Darf nur benutzt werden, wenn 1 Satz upgedated werden soll.
Wenn mehrere Sätze upgedatedwerden soll, dann muss eine Kleinigkeit geändert werden:
UPDATE Tabelle_C SET Menge = xyz WHERE ID IN (select id from Tabelle_a where id IN (1223,2334,5667,…));

Ich hoffe, das hilft.
Viele Grüße
Siegwin

Update TabelleC set Menge = TabelleB.Menge
from TabelleC inner join TabelleA on TabelleC.ArtikelNr = TabelleA.ArtikelNr inner join TabelleB on TabelleA.ID=TabelleB.ID

Achtung - hier werden aber keine Summen berechnet. Bei dem Beispiel gehe ich davon aus, dass in A, B und C jeweils nur ein Datensatz pro Artikel vorhanden ist.

Andernsfalls empfehle ich, den Aufbau der Tabellen generell nochmal zu überdenken und z. B. einheitlich mit einer ArtikelNr oder ID zu arbeiten und nicht mal den und mal den Schlüssel zu verwenden.

Gruß
EPa

Hallo Thomas,
ich bin mir nicht sicher ob ich deine Frage richtig verstanden habe. Aber vom Grundsatz her willst du ein Lookup in einer anderen Tabelle machen. Kannst du irgendwie mehr infos liefern? Ich denke mir das es sicher eine Lösung gibt, z.b. mit Subqueries, dein Problem zu Lösen aber irgendwie kann ich nicht nachvollziehen was genau das Problem ist.

Gruss Dirk

Hallo Thomas

So müsste es etwa klappen:
UPDATE C Set Menge = xyz WHERE Artikelnr = (SELECT Artikelnr FROM A WHERE ID= 3748)

Lieber Gruss
Mordog

Hallo,

ich möchte Artikel über mehrere Tabellen updaten und suche
nach der korrekten Syntax…

Tabelle_A: ID (Zahl) … Artikelnr (Zahl) …
Tabelle_B: ID (Zahl) … Menge (Zahl) …
Tabelle_C: Menge (Zahl) … Artikelnr (Zahl) …

Die Tabellen (hier nur ein Ausschnitt der wichtigsten Felder)
liegen in einer Datenbank.

Mein Versuch:

UPDATE Tabelle_C SET Menge = xyz WHERE ID(Tabelle_A) = 3748

So klappt es natürlich nicht, ich brauch eine Art Querverweis
denn ich will beim Update mit einem Wert (ID aus Tabelle_A)
vergleichen obwohl ich nur die Artikelnr in dieser Tabelle
habe…
D.h. meine Abfrage müßte nach dem WHERE in Tabelle_A die
passende ID zur Artikelnummer raussuchen, geht sowas???

Besten Dank im Voraus!