(Moderator)
Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
Delphi 2007 Enterprise
|
Re: Zu viele Ergebnisse
7. Mai 2005, 18:02
Acho so: Die Schnittmenge geht mit:
select * from c join r on c.cID = r.cID join v on v.cID = r.cID
where c.cID = 2
Fertig. Das mit den Kreisen greift hier auch:
Erstes Join (c mit r): 2 Kreise, c und r : Join = Schnittmenge S
Zweites Join (S mit v: 2 Kreise, S und v : Join = Schnittmenge X
X ist dann dein gewünschtes Ergebnis.
Laut Deinem Text willst Du aber Alle 'v' auflisten. Dann wäre das (ich ziehe die Tabelle, die mich interessiert, immer nach vorne):
select * from v left join (c join r on c.cID = r.cID) on r.cID = v.cID
where c.cID = 2
Es geht auch ohne Klammern. dann mit
select * from v left join r on r.cID = v.cID join r on c.cID = r.cID where c.cID = 2
Der Trick mit den Kreisen funktioniert deswegen, weil der Parser die Joins von links nach rechts durcharbeitet. Ob er dabei die Reihenfolge aus Optimierungsgründen vertauscht, braucht uns nicht zu interessieren.
"If in doubt, use braces Or pray."
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
|