【发布时间】:2021-10-07 06:18:35
【问题描述】:
我正在学习 sql 命令行,并通过终端在 mysql 中使用命令。我正在研究 INNER JOIN,我发现它很容易,但我有一个疑问,我必须解决否则无法传递给其他命令。
我有这四个表:departments、employees、employees_projects、projects
这些表格有以下内容:
部门: id int 名称 varchar(60)
员工: id int 名字 varchar(60) 姓氏 varchar(60) 工资 int 部门ID int
employees_projects: project_id 整数 employee_id int
项目: id int 标题 varchar(60) start_date 日期 end_date 日期 预算说明
当我想使用 INNER JOIN 连接两个表时,我只是这样使用它:
SELECT employees.first_name, employees.last_name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
当我想加入三个表时,我使用以下内容:
SELECT employees.first_name, employees.last_name, departments.name, employees_projects.project_id
FROM ( (employees
INNER JOIN departments ON employees.department_id = departments.id)
INNER JOIN employees_projects ON employees.id = employees_projects.employee_id);
这是我的问题:如您所见,最后一行的结果会给我employees.first_name、employees.last_name、departments.name、employees_projects.project_id,这意味着我会得到员工的姓名、姓氏、部门和他们正在从事的项目的 ID。现在,考虑到我们上面的表,我无法创建一个单行 SQL 查询,结果是employees.first_name、employees.last_name、departments.name、projects.title。这意味着一个查询会给出员工的姓名、姓氏、部门和他们正在从事的项目的名称。
是否有可能在一行查询中实现这一点?
mysql> 谢谢大家!
编辑帖子:
我创建了以下行:
SELECT employees.first_name, employees.last_name, departments.name, projects.title FROM ( (employees, projects INNER JOIN departments ON employees.department_id = departments.id) INNER JOIN employees_projects ON projects.id = employees_projects.project_id AND employees_projects.employee_id = employees.id);
但不幸的是,我收到了这个错误,这很奇怪,因为看起来是正确的列:
mysql> SELECT employees.first_name, employees.last_name, departments.name, projects.title FROM ( (employees, projects INNER JOIN departments ON employees.department_id = departments.id) INNER JOIN employees_projects ON projects.id = employees_projects.project_id AND employees_projects.employee_id = employees.id);
ERROR 1054 (42S22): Unknown column 'employees.department_id' in 'on clause'
mysql>
【问题讨论】:
-
我删除了 sql server 标签,因为你明确提到了 MySql。
-
谢谢您,对发布我的问题的错误感到抱歉,我不太习惯这个论坛并尽力而为,再次感谢您。
-
“单行查询”是什么意思?最好对查询进行格式化,使其易于阅读和维护。
-
Gordon 我的意思是我需要知道是否使用一个命令行就能达到我想要的结果。也许这不可能这就是我问的原因。
标签: mysql sql join inner-join