2017-11-18 4 views
0

Ich habe die folgende Tabellenstruktur:SQL-Abfrage Problem für viele zu viele Beziehung

Tabelle Sailor:

sid sname 
------------------- 
22  Dustin 
29  Brutus 
31  Luber 
32  John 

Tabelle Boat:

bid bname 
------------------- 
101 Pirate 
102 Pirate 
103 Marine 

Tabelle Reserve:

bid sid day 
------------------------------ 
101 22 10/10/98 
102 22 10/10/98 
103 22 10/8/98 
103 31 10/7/98 
102 29 9/8/98 
103 32 9/8/98 

Das erwartete Ergebnis ist: Finden Sie die Namen aller Segler, die alle Boote Pirate reserviert haben.

Grundsätzlich muss ich alle Matrosen Name fragen, die Boot Pirate reserviert haben.

Das einzige Problem ist, dass in Tabelle Boot habe ich 2 Spalte, die bname hat als Pirate und ihr Gebot sind unterschiedlich.

Irgendeine Idee, wie man es mit der Frage erreicht?

+0

Beispieldaten zur Verfügung, und erwartete Ausgabe auf der Grundlage dieser Daten – tonypdmtr

Antwort

0

hilft BTW, Ihre Termine sind nicht eindeutig. Bitte verwenden Sie das Format JJJJ-MM-TT (oder JJJJMMTT).

Wie auch immer, hier ist ein Weg:

select b.bid,b.bname,s.sid,s.sname,r.day 
    from Boat b join Reserve r on b.bid = r.bid 
    join Sailor s on r.sid = s.sid 
    where b.bname = 'Pirate'; 
0

Wenn ich das richtig verstanden, Sie sind für eine Join-Operation suchen:

SELECT S.* FROM Sailor S JOIN Res R ON S.sid = R.sid 
JOIN Boat B on R.bid = B.bid where B.bname = 'Pirate' 

Hoffe, dass es