我一直试图理解连接一段时间,我注意到很多例子展示了如何使用左/内连接基于双表查询来检索值。我将尝试为你们所有人绘制我的榜样,希望它有助于解释我的问题。
Table 1: project_id | project_name 1 super-project Table 2: project_id | course_id ---> project_id and course_id are foreign keys here. 1 3 Table 3: course_id | course_name ---> course_id is a primary key here 3 | Writing 101
我的目标:
我希望能够通过使用project_id返回“Writing 101”。所以,如果我知道project_id是1,我会查询数据库,发现与当前项目关联的course_id是3
。然后,我将使用3
的course_id查询表3,并发现相关的course_name为writing 101
。
有没有办法在使用某种连接的单个查询中执行此操作?
答案 0 :(得分:3)
select course_name from Table3
inner join Table2
on Table2.course_id = Table3.course_id
where Table2.project_id = 1
请注意,只需要一次加入!
另请注意,如果project_id = 1出现在多个课程中,则会显示所有这些课程。
你能解释为什么只需要一个连接而不是下面需要两个连接的答案吗?
另一个答案不需要两个连接。由于project_id存在于“中间”表中,因此无需在Table1中查找它。现在,如果您需要项目的名称(因为您没有在问题中提及,情况并非如此),那么您将不得不加入Table1
答案 1 :(得分:1)
你走了:
SELECT c.course_name
FROM Table3 c
INNER JOIN Table2 pc ON pc.course_id = c.course_id
INNER JOIN Table1 p ON p.project_id = pc.project_id
WHERE project_id = 1