Sql 选择查询Oracle 11g

Sql 选择查询Oracle 11g,sql,oracle11g,Sql,Oracle11g,我有4个表:Team Player和Borth of a Player(其中我有城市和国家)。您需要两次检索“Team”表,并在它们之间联接 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", Team

我有4个表:Team Player和Borth of a Player(其中我有城市和国家)。

您需要两次检索“Team”表,并在它们之间联接

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;
不确定这是否是确切正确的请求,但您明白了:诀窍在“Birth\u Place1.Country=Birth\u Place2.Country”WHERE子句中

还重写了关于国家的WHERE条款,因为它看起来只过滤掉了两个国家


你可以考虑一下你的体系结构,特别是出生地点表:我猜如果玩家想把它作为过滤器使用,那么玩家就知道玩家的国家是有意义的。

谢谢,除了正确的玩家被显示之外,它是有效的,但是每个玩家出现2次,你的意思是一次离开,一次回到家,或无论如何,你能在选择后添加DISTINCT关键字,看看是否足够吗?不,甚至不,第一个球员出现了4次,但来自瑞典的球员很好。我尝试了DISTINCT,但只有4名球员出现,该请求仅检索主队球员,抱歉。一种从客队找回球员的方法是复制请求,然后合并2名球员,但必须有一种更简单的方法。我明天再来,对不起,我现在帮不了你更多的忙。同时,我希望其他人有更好的答案:/