Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用唯一ID连接表_Mysql_Sql - Fatal编程技术网

Mysql 使用唯一ID连接表

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

您好,我在一家福利公司工作,我需要一个通过员工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-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,那时候你是对的,但不知道,。。。。