Zum Beispiel, wenn ich Bälle und Boxen habe, können Bälle in vielen Boxen sein, und Boxen können gesperrt werden, wie kann ich die Bälle auswählen, die nicht in einer verschlossenen Box sind?Ausgeschlossene Datensätze für Spaltenwert ausschließen?
balls
id name
== ====
1 in neither
2 in unlocked
3 in locked
4 in both
boxes
id locked
== ======
1 0
2 1
boxings
ball_id box_id
======= ======
2 1
3 2
4 1
4 2
Ich habe mit dieser mit links schließt sich kommen, aber es ist das „in beiden“ Ball Rückkehr, die ich ausschließen wollen.
SELECT balls.*
FROM balls
LEFT OUTER JOIN boxings ON boxings.ball_id = balls.id
LEFT OUTER JOIN boxes ON boxes.id = boxings.box_id
WHERE (boxings.box_id IS NULL or boxes.locked = 0)
AND boxes.id NOT IN (
SELECT id FROM boxes WHERE locked = 1
)
Wunschergebnisse:
id name
== ====
1 in neither
2 in unlocked
SQL Fiddle: http://sqlfiddle.com/#!9/c26ab/4
, dass es, Dank! – jemminger