首页 > 解决方案 > 3张桌子加入

问题描述

我被困在我的 3 张桌子上。我有一张表,它是具有 3 个字段的候选人(id_candidate、name_candidate、firstname_candidate)

另一个表命名为带有 5 个字段的课程(id_lesson、price_lesson、date_lesson、fk_candidate、fk_monitor)

我有一个带有 3 个字段(id_monitor、name_monitor、firstname_monitor)的监视器表

我可以加入 2 个表(候选人和课程)这是请求

SELECT *
FROM lessons INNER JOIN
     candidates
     ON lessons.fk_candidate=candidates.id_candidate
ORDER BY id_candidate ASC

但我的问题是。我不明白如何加入 3 个表?事实上,班长的名字必须出现在课表上。

我试过了

SELECT *
FROM candidates id_candidate INNER JOIN
     lessons id_lesson
     ON lessons.fk_candidate = candidates.id_candidate INNER JOIN 
     monitors id_monitor 
     ON lessons.fk_monitor = monitors.id_monitor;

标签: sqlphpmyadmin

解决方案


大概是这样的:

SELECT c.*, l.*, m.name_monitor  -- list out the columns you want explicitly
FROM candidates c INNER JOIN
     lessons l
     ON l.fk_candidate = c.id_candidate INNER JOIN 
     monitors m 
     ON l.fk_monitor = m.id_monitor;

笔记:

  • 使用表别名是个好主意。我推荐表名的缩写。
  • 定义表别名后,使用它们。您的on子句仍然引用表名。
  • 明确列出所需的列。

推荐阅读