Mysql 连接3个SQL表
我有3张类似这样的桌子:Mysql 连接3个SQL表,mysql,sql,Mysql,Sql,我有3张类似这样的桌子: Table1: PersonSSN NumberOfCars Table2: PersonSSN NumberOfPhones Table3: PersonName PersonSSN 表1和表2都有一个关于PersonsN的表3的外键引用 我需要以这样一种方式加入其中,以便: 个人姓名电话号码汽车号码 以下是适用于联接的一些条件: 如果一个人在表1和表2中都有一个条目,我会看到为他填充的所有3个字段 如果一个人在表1中有一个条目,而不是在表2中,他应该仍然出现,
Table1:
PersonSSN
NumberOfCars
Table2:
PersonSSN
NumberOfPhones
Table3:
PersonName
PersonSSN
表1和表2都有一个关于PersonsN的表3的外键引用
我需要以这样一种方式加入其中,以便:
个人姓名电话号码汽车号码
以下是适用于联接的一些条件:
这能在一个查询中实现吗?如果是,查询应该是什么 这是一个
左外连接
查询:
select t3.name, coalesce(t1.NumberOfPhones, 0), coalesce(t2.NumberOfCars, 0)
from table3 t3 left outer join
table1 t1
on t3.ssn = t1.ssn left outer join
table2 t2
on t3.ssn = t2.ssn;
这是一个
左外部联接
查询:
select t3.name, coalesce(t1.NumberOfPhones, 0), coalesce(t2.NumberOfCars, 0)
from table3 t3 left outer join
table1 t1
on t3.ssn = t1.ssn left outer join
table2 t2
on t3.ssn = t2.ssn;
这似乎不起作用。我遗漏了表2中的数据,但表1中没有。其他一切看起来都很好。@山:请考虑提供一个演示如何解决这个问题,因为,据我所知,它应该工作。@山…是否所有的
SSN
都在表3
中?如果表3
没有涵盖这两个表中的全部人口,就会发生这种情况。@GordonLinoff,是的,他们是。@AndriyM。这里有一个例子。您可以看到,有些记录(Name2、Name3)满足WHERE子句,但没有显示。此外,出现的Name1记录不准确。这似乎不起作用。我遗漏了表2中的数据,但表1中没有。其他一切看起来都很好。@山:请考虑提供一个演示如何解决这个问题,因为,据我所知,它应该工作。@山…是否所有的SSN
都在表3
中?如果表3
没有涵盖这两个表中的全部人口,就会发生这种情况。@GordonLinoff,是的,他们是。@AndriyM。这里有一个例子。您可以看到,有些记录(Name2、Name3)满足WHERE子句,但没有显示。此外,显示的Name1记录也不准确。