sql - 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;
解决方案
大概是这样的:
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
子句仍然引用表名。 - 明确列出所需的列。
推荐阅读
- php - PhpStorm 语法高亮在其中不起作用标签
- excel - 如果单元格包含这个或那个粘贴到另一张纸上
- java - 在 Java 中获取 CET 冬季时间
- angular - NATIVESCRIPT 错误 ReferenceError:找不到变量:IDBIndex
- git - Git 没有提示我输入密码
- zend-framework2 - 如何使用 PHPUnit 版本 8.5.1 配置 Zend 框架 2.4 的代码覆盖率?
- ioc-container - 如何检查接口是否已在 StructureMap 中注册?
- python - 在动画网格中的单元格之间添加空格
- ruby-on-rails - 获取在线可用的产品 - Shopify
- r - 如何将链接指向 .Md 文件中的另一个选项卡