Mysql 使用唯一ID连接表
您好,我在一家福利公司工作,我需要一个通过员工SSN连接三个数据表的查询。比如说, 一个表只有员工数据Mysql 使用唯一ID连接表,mysql,sql,Mysql,Sql,您好,我在一家福利公司工作,我需要一个通过员工SSN连接三个数据表的查询。比如说, 一个表只有员工数据 EmployeeSSN SSN Status FirstName LastName 111-11-1111 111-11-1111 Employee John Smith 222-22-2222 222-22-2222 Employee David Gonzales 333-33-3333 333-33-33
EmployeeSSN SSN Status FirstName LastName
111-11-1111 111-11-1111 Employee John Smith
222-22-2222 222-22-2222 Employee David Gonzales
333-33-3333 333-33-3333 Employee Eric Moore
一个表具有从属数据
EmployeeSSN SSN Status FirstName LastName
111-11-1111 777-77-7777 Spouse Dina Smith
222-22-2222 888-88-8888 Spouse Niki Gonzales
333-33-3333 999-99-9999 Spouse Carla Moore
一个表具有从属数据子表
EmployeeSSN SSN Status FirstName LastName
111-11-1111 444-44-4444 Child Cindy Smith
222-22-2222 555-55-5555 Child Calob Gonzales
333-33-3333 666-66-6666 Child Kevin Moore
我需要的是这样的东西,作为下面的最终输出。雇员是将雇员和家属联系在一起的纽带。我尝试过联合语句和透视语句,但仍在学习SQL,因此遇到了很多问题。任何帮助都将不胜感激
EmployeeSSN SSN Relation Last Name First Name
111-11-1111 111-11-1111 Employee John Smith
111-11-1111 777-77-7777 Spouse Dina Smith
111-11-1111 444-44-4444 Child Cindy ANDRE
试试这个
(SELECT EmployeeSSN,SSN,Relation,Last Name,First Name FROM Employee where EmployeeSSN=111-11-1111)
union
(SELECT EmployeeSSN,SSN,Relation,Last Name,First Name FROM Spouse where EmployeeSSN=111-11-1111)
union
(SELECT EmployeeSSN,SSN,Relation,Last Name,First Name FROM Child where EmployeeSSN=111-11-1111)
这对我很有用
SELECT EmployeeSSN,SSN,Status As Relation,FirstName,LastName
FROM TABLE1 A,TABLE2 B,TABLE3 C where
A.EmployeeSSN = B.EmployeeSSN,B.EmployeeSSN = C.EmployeeSSN;
这将为您提供所需的输出:
(SELECT EmployeeSSN, SSN, 'Employee' Relation, LastName, FirstName FROM EmployeeTable WHERE EmployeeSSN=111-11-1111)
UNION
(SELECT EmployeeSSN, SSN, 'Spouse' Relation, LastName, FirstName FROM SpouseTable EmployeeSSN=111-11-1111)
UNION
(SELECT EmployeeSSN, SSN, 'Child' Relation, LastName, FirstName FROM DependentTable EmployeeSSN=111-11-1111)
请注意,关系列是从每个子查询中的字符串分配的。这将根据每个记录的原始表为其分配适当的关系。您尝试了什么?@user3444754,这是搜索pivot表和MySQL的最佳解决方案。这与工会无关。无论何时,只要您想获取列的值(如status及其属性),就可以生成这些列的值,这是一个透视表。UNION用于将一个SQL语句中的行附加到另一个SQL语句中。@user3444754,嘿,我有一些疑问,你是说employeessn是指序列号吗,。你想显示所有表中的所有第一个值…看看这里-你从哪里得到的关系,你应该看到表。。。。它的最佳解决方案仅适用于透视表……看看我上面放置的SQLFIDLE链接,我们有相同的想法:@轻子,没有关系Column.同意-它必须基于EmployeeSSN@Leptonator,那太糟糕了,他正在显示输出,如果他可能不显示op,那时候你是对的,但不知道,。。。。