有3个表开发人员、经理和项目:
create table DEVELOPER(id int(4), lastname varchar(40), project_id int(4));
create table MANAGER(id int(4), lastname varchar(40), project_id int(4));
create table PROJECT(id int(4), name varchar(40));
PROJECT和DEVELOPER之间的关系是一对多,PROJECT和MANAGER之间的关系是一对一。
所有存储在数据库中的姓氏都是唯一的。经理可以同时是同一个项目的开发人员。(在这种情况下,他的数据存储在两个表中)。
我想从我的数据库中收到所有开发人员和经理对特定项目的列表,形式如下:
识别码|姓氏|是经理
我认为它适合下面的查询:
SELECT id, lastname, false AS isManager FROM developer WHERE project_id = 314
UNION
SELECT id, lastname true AS isManager FROM manager WHERE project_id = 314
但是我不想有两行经理的数据,如果他也是特定项目的开发人员!我想留下property isManager为true的行。请建议我正确的查询来解决这个问题!
2条答案
按热度按时间hmae6n7t1#
您可以使用
FULL OUTER JOIN
来实现此目的:但是首先您可以考虑@a_horse_with_no_name对数据库设计的建议。
at0kjp5o2#
你可以
group by
来消除重复: