Oracle SQL从多个表中选择

bttbmeg0  于 2023-01-30  发布在  Oracle
关注(0)|答案(1)|浏览(132)

Oracle SQL从多个表中选择并连接它们。寻找球员全名,电子邮件地址,球员号码,国家ID谁是来自澳大利亚的球员类型=新或EXE
选择T.名字,T.姓氏,E.电子邮件ID,PN.玩家,C.国家ID从玩家类型T左加入玩家联系人C在T上玩家ID = C.玩家ID右加入玩家联系人C在P上联系人ID = C.联系人ID和C.国家代码=“澳大利亚”和T.玩家类型=“新”或“EXE”
以下是预期输出

MARK CLARKSON  dfgh@gmail.com  480 04  
   CATH SPEARS tygh@yahoo.com 481 04
   FESS LOPEZ fgvhb@yandex.com 482 04
   FEXS LOPEZ   byvg@google.com 483 04
   EOVA SMITH  ghjkjh@sdf.com 493 04

下面是SQL小提琴
https://dbfiddle.uk/LPzlOcwB

bis0qfac

bis0qfac1#

T.PLAYER_TYPE = 'NEW' OR 'EXE'不是有效语法,您可以使用INNER JOIN而不是OUTER JOIN,并且需要联接所有表而不是联接player_contact两次。
就像这样:

SELECT t.first_name || ' ' || t.last_name AS full_name,
       e.email_id,
       p.player_number,
       p.country_id
FROM   playertype t
       INNER JOIN player p
       ON (p.player_id = t.player_id)
       INNER JOIN country_table c
       ON (p.country_id = c.country_id)
       INNER JOIN player_contact pc
       ON (p.player_id = pc.player_id)
       INNER JOIN contact_email e
       ON (pc.contact_id = e.contact_id)
WHERE  player_type IN ('NEW', 'EXE')
AND    c.country_name = 'AUSTRALIA'

对于您的示例数据,它输出:
| 全名|电子邮件ID|玩家编号|国家ID|
| - ------|- ------|- ------|- ------|
| 马克·克拉克森|www.example.comdfgh@gmail.com四| 480 | 04 |
| 导管支架|www.example.comtygh@yahoo.com四| 481 | 04 |
| 费斯·洛佩兹|www.example.comfgvhb@yandex.com四| 482 | 04 |
| FEXS洛佩兹|www.example.combyvg@google.com四| 483 | 04 |
| 伊娃·史密斯|www.example.comghjkjh@sdf.com四| 493 | 04 |
fiddle

相关问题