在SQL中具有不同属性的Union 2表

时间:2010-10-06 10:42:30

标签: sql

我正在进行SQL分配,我发现有一个问题要求我将2个表联合在一起,但这两个表没有相同的属性。问题将在下面显示。

列出客户和员工的联合。对于客户,列出客户名称(第一个和最后一个)和联系人(CustStreet,CustCity,CusState)。对于员工,列出员工姓名(第一个和最后一个)和联系人(EmpPhone和EmpEmail)。

聚苯乙烯。可能是我误解了这个问题。

提前谢谢

5 个答案:

答案 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