问题描述
我有两个表Employee和Department。我想编写一个查询,该查询可以为我提供来自两个表的数据以及值的计数。
create table Employee(EmpID text);
insert into Employee values("A");
insert into Employee values("B");
insert into Employee values("C");
create table Departments(EmpID text);
insert into Departments values("B");
insert into Departments values("C");
insert into Departments values("D");
| EMP_ID | COUNT |
|-------- |------- |
| A | 1 |
| B | 2 |
| C | 2 |
| D | 1 |
到处搜索,但没有找到任何有用的信息。 这是游乐场https://paiza.io/projects/TdkdHannoclhbevdqpFlKw?language=mysql
下面是我正在尝试的查询,它使用完整的外部联接,因为它提供了所有匹配和不匹配的行
SELECT *FROM Employee outer join Departments on Employee.EmpID=Departments.EmpID
解决方法
这是一个非常奇怪的数据模型。但是先使用&&
,然后使用union all
:
group by
您在select empid,count(*)
from (select empid from employee union all
select empid from department
) e
group by empid;
中拥有empid
与department
中的empid
不匹配是数据建模问题。您应该具有从employee
到department
的外键关系,以确保永远不会发生这种情况。您的数据库缺乏关系完整性。
select empid,count(empid)
from (
select empid from employee
union all
select empid from department
) e
group by empid;
,
您可以使用UNION ALL
请参阅:here
或者您可以查看(临时)合并表
请参阅:here