2016-04-03 15 views

Antwort

0

Sie müssen die Tabelle "Team" zweimal abrufen und zwischen ihnen verbinden.

SELECT Game_Date, 
    Player.First_Name || ' ' || Player.Last_Name AS "PLAYER NAME", 
    UPPER(Team1.Team_Name) AS "HOME TEAM", 
    UPPER(Team2.Team_Name) AS "VISITING TEAM", 
    Team1.Team_City ||' '|| Team1.Team_Name as "TEAM", 
    Birth_Place1.Country 
FROM Game 
    JOIN Team Team1 ON Game.Team_Home_ID = Team1.Team_ID 
    JOIN Team Team2 ON Game.Team_Visitor_ID = Team2.Team_ID 
    JOIN Player Player1 ON Player1.Team_ID = Team1.Team_ID 
    JOIN Player Player2 ON Player2.Team_ID = Team2.Team_ID 
    JOIN Birth_Place Birth_Place1 ON Birth_Place1.Birth_Place_ID = Player1.Birth_Place_ID 
    JOIN Birth_Place Birth_Place2 ON Birth_Place2.Birth_Place_ID = Player2.Birth_Place_ID 
WHERE Birth_Place1.Country = Birth_Place2.Country 
    AND Season = '2015-2016' 
    AND Game_Date = '10-10-2015' 
    AND Birth_Place1.Country NOT IN ('CAN', 'USA') 
ORDER BY Birth_Place1.Country; 

Nicht sicher, ob dies die genaue richtige Anforderung ist, aber Sie bekommen die Idee: der Trick in der ist „Birth_Place1.Country = Birth_Place2.Country“ WHERE-Klausel.

Die WHERE-Klausel wurde auch über Land neu geschrieben, da es aussah, als ob es nur zwei Länder herausgefiltert hätte.

Sie könnten Ihre Architektur ein wenig überprüfen, insbesondere die Birth_Place-Tabelle: Ich denke, das Land des Spielers in der Player-Tabelle zu kennen ist sinnvoll, wenn Sie es als Filter verwenden möchten.

+0

Vielen Dank, es funktioniert, außer dass die richtigen Spieler angezeigt werden, aber jeder Spieler erscheint 2 mal – Carlos

+0

Sie meinen einmal weg und einmal zu Hause, oder? Wie auch immer, können Sie das DISTINCT-Schlüsselwort nach SELECT hinzufügen und sehen, ob es genug ist? –

+0

Nein, nicht einmal, der erste Spieler erscheint 4 Mal, aber die aus Schweden sind gut – Carlos