【发布时间】:2010-11-13 21:15:50
【问题描述】:
我想显示两个表的“FULL JOIN”,但使用带有外键的中介来创建匹配项。
这应该显示所有员工及其正在从事的项目的列表,并显示任何没有项目的员工,或没有员工的项目。
这个查询的问题是第二个“RIGHT JOIN”覆盖了第一个“LEFT JOIN”。我第二次“完全加入”的所有尝试都失败了。 (1064语法错误,真实描述)
SELECT EMP_LNAME, EMP_FNAME, Project.PROJ_NAME
FROM Employee1
LEFT JOIN Assignment ON Employee1.EMP_CODE = Assignment.EMP_CODE
FULL JOIN Project ON Assignment.PROJ_CODE = Project.PROJ_CODE
ORDER BY Employee1.EMP_LNAME /* Syntax error */
我试过的第二种
SELECT EMP_LNAME, EMP_FNAME, Project.PROJ_NAME
FROM Employee1
LEFT JOIN Assignment ON Employee1.EMP_CODE = Assignment.EMP_CODE
RIGHT JOIN Project ON Assignment.PROJ_CODE = Project.PROJ_CODE
ORDER BY Employee1.EMP_LNAME /* Right join overwrites original left join */
【问题讨论】:
-
您能解释一下您要做什么吗?
-
对不起,如果我没有说清楚:表 Employee1 包含员工的姓名和 ID。表 Projects 包含项目的名称和 ID。表分配使用外键将员工分配给项目。我想在 Employee1 和 Project 表上执行“FULL JOIN”,但必须使用 Assignment 表作为中介。
标签: sql mysql join mysql-error-1064