我正在进行SQL分配,我发现有一个问题要求我将2个表联合在一起,但这两个表没有相同的属性。问题将在下面显示。
列出客户和员工的联合。对于客户,列出客户名称(第一个和最后一个)和联系人(CustStreet,CustCity,CusState)。对于员工,列出员工姓名(第一个和最后一个)和联系人(EmpPhone和EmpEmail)。
聚苯乙烯。可能是我误解了这个问题。
提前谢谢
答案 0 :(得分:1)
类似的东西:
SELECT CustFirstName, CustLastName, CustStreet, CustCity, CustState, NULL, NULL
FROM Customers
UNION
SELECT EmpFirstName, EmpLastName, NULL, NULL, NULL, EmpPhone, EmpMail
FROM Employees
答案 1 :(得分:0)
这是一个有效的问题,因为两者都有相同的结果列:客户名称和联系人。您可以使用内联视图和别名来执行此操作。
E.g。 (oracle sql语法)
select FIRST_NAME || ' ' || LAST_NAME CUSTOMER_NAME, CUST_STREET || ', ' || CUST_CITY || ', ' || CUST_STATE CONTACT from SOME_TABLE
union
select FIRST_NAME || ' ' || LAST_NAME CUSTOMER_NAME, EMP_PHONE || ', ' || EMP_EMAIL CONTACT from SOME_TABLE;
答案 2 :(得分:0)
如果合并列的类型相同,则可以使联合出现问题...因此您可以在空字符串或空值中留空列
Select CustomerFirst + ' ' + CustomerLast, CustStreet, CustCity, CusState,'','' from Customers
union all
Select EmployeeFirst + ' ' + EmployeeLast, '','','', EmpPhone, EmpEmail from Employees
注意:未经测试。
答案 3 :(得分:0)
在customers
选择中,只需使用
null as EmpPhone, null as EmpEmail
然后CustStreet, CustCity, CusState
请注意,字段必须位于联合查询中的相同位置。
答案 4 :(得分:0)
您可以选择Null值作为UNION选择的一部分。因此,对于Employee和NUll中不存在的两个Employee字段,为Employee中不存在的3个Customer字段中的每一个选择NULL 例如
SELECT C.FirstName, C.LastName, C.CustStreet, C.CustCity, C.CustState, NULL, NULL FROM Customers C
UNION ALL
SELECT E.FirstName, E.LastName, NULL, NULL, NULL, E.EmpPhone, E.EmpEmail FROM Employees E