在SQL中没有相同属性的Union 2表
我正在做一个SQL赋值,我发现有一个问题要求我将2个表合并在一起,但这两个表没有相同的属性。问题将显示在下面 列出客户和员工的工会。对于客户,请列出客户姓名(第一名和最后一名)和联系人(卡斯特街、卡斯特城、库斯塔特)。对于员工,请列出员工姓名(姓名和姓氏)和联系人(电话和邮件) 另外,我可能对这个问题有误解在SQL中没有相同属性的Union 2表,sql,Sql,我正在做一个SQL赋值,我发现有一个问题要求我将2个表合并在一起,但这两个表没有相同的属性。问题将显示在下面 列出客户和员工的工会。对于客户,请列出客户姓名(第一名和最后一名)和联系人(卡斯特街、卡斯特城、库斯塔特)。对于员工,请列出员工姓名(姓名和姓氏)和联系人(电话和邮件) 另外,我可能对这个问题有误解 提前感谢这是一个有效的问题,因为两者都有相同的结果列:客户名称和联系人。可以使用内联视图和别名来执行此操作 例如(oracle sql语法) 诸如此类: SELECT CustFirstNa
提前感谢这是一个有效的问题,因为两者都有相同的结果列:客户名称和联系人。可以使用内联视图和别名来执行此操作 例如(oracle sql语法) 诸如此类:
SELECT CustFirstName, CustLastName, CustStreet, CustCity, CustState, NULL, NULL
FROM Customers
UNION
SELECT EmpFirstName, EmpLastName, NULL, NULL, NULL, EmpPhone, EmpMail
FROM Employees
如果合并列的类型相同,则可以创建无问题的联合。。。因此,可以使用空字符串或空值将列留空
Select CustomerFirst + ' ' + CustomerLast, CustStreet, CustCity, CusState,'','' from Customers
union all
Select EmployeeFirst + ' ' + EmployeeLast, '','','', EmpPhone, EmpEmail from Employees
注意:未测试。在
客户
选择中,只需添加空的默认字段
null as EmpPhone, null as EmpEmail
然后对CustStreet、CustCity、Custtate也一样
请注意,字段在联合查询中必须位于同一位置。作为联合选择的一部分,您可以选择空值。因此,为Custmer中不存在的两个Employee字段选择NULL,为Employee中不存在的3个Customer字段中的每个字段选择NULL 例如
非常感谢。这是一个非常有用的答案。我相信这是一个错误的答案,因为它会留下空白字段,您的老师不会高兴的。很抱歉,我忘了告诉您每个表中的属性。在客户只有街道城市州,而员工只有电话和电子邮件。我猜您误解了这个问题。来自RC的答案确实会返回两个表的并集而不会出错,但我看不出它有什么用处。
null as EmpPhone, null as EmpEmail
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