Dynamischer Join, je nachdem welche Bedingung erfüllt ist?

mh1

Grünschnabel
Hallo zusammen!

Ich habe folgendes Problem:

Ich habe folgende Tabellen:

Exemplar(exID, medID, ...)
Medium(medID,titel,typID,rowID,...)
Typ(typID,bezeichnung,...)
DVD(dvdID,dauer,...)
Buch(buchID, seitenzahl,...)

Anhand der Exemplar ID (exID) möchte ich alle relevanten Daten erhalten, je nach Art (DVD,Buch,...). Ich joine also folgendermaßen:

SELECT * FROM Exemplar as e JOIN Medium as m ON e.medID = m.medID JOIN Typ as t on m.typID = t.typID

Und nun möchte ich das ganze noch entweder mit dvd oder mit buch joinen, also entweder
... JOIN buch as b on m.rowID = b.buchID
oder
... JOIN dvd as d on m.rowID = d.dvdID
und zwar je nachdem, ob m.typID = 1 (dvd) oder 2(buch) ist.

Wie mache ich das?

Danke im Vorraus!

Gruß, mh
 
Du könntest einen (mehere) LEFT JOIN machen. Die Ergebnistabelle wird dann entsprechend breiter und den Feldern, die z.B. zu Buch gehören obwohl es sich um eine DVD handelt, wird dann null zugewiesen.
 
Noch eine Möglichkeit ist es beide Queries (also eine mit JOIN zur DVDTabelle und eine mit JOIN zur Buchtabelle) per UNION zu verknüpfen.
 
Zurück