Query gesucht: Query gesucht

Beitrag lesen

Hi,

Auch die Tabellenstruktur scheint mit suboptimal, zumindest in einem Punkt

Ja, weiß ich.
Die Spalte L-ID in der Tabelle LM führe ich redundant mit. Eigentlich nur zum entwickeln, sie wäre unnötig, weil die Relation ja bereits über die LT-ID Spalte gegeben ist.

Szenario:

Tabelle L:
L-ID, Art

Tabelle LT:
LT-ID, L-ID, P-ID

Tabelle LM:
LM-ID, L-ID, LT-ID, Anzahl

Du hast da quasi ein Dreieck drin. Sowohl LT als auch LM haben einen Verweis auf L, aber LM hat auch einen Verweis auf LT. Somit ist bereits LM über LT mit L verbunden und braucht keinen direkten Verweis auf L.

Ja. Genau das meinte ich oben.

Oder zeigen etwa miteinander verbundene LT und LM auf unterschiedliche L?

Das auch.
Trotzdem könnte die Spalte L-ID in der LM-Tabelle ersatzlos entfallen.

Ich möchte, falls Eintrag in Tabelle LM vorhanden, in der Tabelle LM die Anzahl eines Postens LT.P-ID="ABC" updaten. Aber nur dann, wenn der zugehörige Eintrag in der Tabelle L die Art "XY" hat.

Wie sieht das aus?

  
UPDATE l-tabelle l  
JOIN lt-tabelle lt  
ON l.L-ID = lt.L-ID  
LEFT JOIN lm-tabelle lm  
ON lt.LT-ID = lm.LT-ID  
SET lm.Anzahl = ".set_kontextwechsel($neue_Anzahl,'int')."  
WHERE l.Art = 'XY' AND  
lt.PID = ".set_kontextwechsel($t_id,'int')."  

MySQLs UPDATE kennt eine Multi-Table-Variante. Die kann einerseits Daten in mehreren Tabellen ändern, andererseits können die Joins auch nur zum Finden der richtigen Daten in einer Tabelle herangezogen werden.

Hast Du dafür mal ein Beispiel?

Gruß, Frank