请考虑以下表格:
基于id
...
- 比尔是约翰的老板
- 汉克是安迪和亚历克斯的老板
writers
:
| 标识符|姓名|凸毂标识|
| - -|- -|- -|
| 一个|若翰|2个|
| 2个|比尔|2个|
| 三个|安迪|四个|
| 四个|汉克|四个|
| 五个|亚历克斯|四个|writers
有papers
他们写的...
papers
:
| 标识符|职称|编写器标识|
| - -|- -|- -|
| 一个|波斯顿|一个|
| 2个|芝加哥|四个|
| 三个|思科公司|三个|
| 四个|西雅图|2个|
| 五个|北部地区|五个|
我需要一个SQL查询,它可以返回Hank(id = 4
==〉boss_id = 4
)的writers
所写的每一篇论文的papers.*
,这恰好包括Hank本人,因为他注册为自己的老板,但这并不重要。
所需输出:
| 标识符|职称|编写器标识|
| - -|- -|- -|
| 2个|芝加哥|四个|
| 三个|思科公司|三个|
| 五个|北部地区|五个|
我有什么,没有工作的希望:
SELECT * FROM papers p WHERE ( writers w AS p.writer_id JOIN w.boss_id = 4 );
2条答案
按热度按时间kupeojn61#
你在解决问题的正确轨道上。在这里我分享两种方法:一种是通过使用子查询,另一种是通过连接两个表。
架构和插入语句:
查询1(使用子查询):
输出量:
| 标识符|职称|编写器标识|
| - -|- -|- -|
| 2个|芝加哥|四个|
| 三个|思科公司|三个|
| 五个|北部地区|五个|
查询2(使用联接):
输出量:
| 标识符|职称|编写器标识|
| - -|- -|- -|
| 三个|思科公司|三个|
| 2个|芝加哥|四个|
| 五个|北部地区|五个|
piwo6bdm2#
您可以使用writers表主键和papers表外键将这两个表连接在一起,然后在where子句中指定boss_id。