2016-04-03 14 views
0

私は4つのテーブルを持っています:チームプレーヤーとプレーヤーの誕生(私は都市と国を持っています)。クエリの選択Oracle 11g

答えて

0

"チーム"テーブルを2回取得し、その間に参加する必要があります。トリックは「Birth_Place1.Country = Birth_Place2.Country」WHERE句である:これは正確に正しい要求ですが、あなたのアイデアを得る場合

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; 

わかりません。

また、2カ国のみを除外したように見えるので、WHERE句を国に書き直しました。

あなたのアーキテクチャを少し、特にBirth_Placeテーブルを見直すことを検討することがあります。プレーヤの国をプレーヤテーブルで知っていることは、フィルタとして使用する場合に意味があると思います。

+0

ありがとう、それは正しいプレーヤーが表示されているが、各プレーヤーが2回表示されていることを除いて動作します – Carlos

+0

あなたは一度離れて、一度家庭として、とにかく、SELECTの後にDISTINCTキーワードを追加して十分かどうか確認できますか? –

+0

いいえ、最初の選手は4回出場しますが、スウェーデンの選手はいいです – Carlos