如何将来自同一表的两个不同的选择联接在一起

时间:2018-12-25 06:08:28

标签: sql join

我似乎无法设法将来自同一表的两个选择都加入。

到目前为止,我要查询的是:

select 
    S.SaleID, C.CustomersID, S.HouseID, NumOfRooms, CuCity, SaleDate
from 
    sale S, Customers C, SaleToCustomers STC, House H 
where 
    S.SaleID = STC.SaleID 
    and C.CustomersID = STC.CustomersID 
    and S.HouseID = H.HouseID 
    and C.CuCity = 'Holon' 
    and year(SaleDate) <= 2016 
    and H.HouseID in (select H.HouseID AS NewHouseID, NumOfRooms AS NewNumOfRooms, C.CityName
                      from Sale S, House H, City C
                      where S.SaleDate is null 
                        and H.HouseID = S.HouseID 
                        and C.CityID = 4)

我希望同时显示两个选择,也许是这样的:

result

只有一个选择而不是两个选择。

2 个答案:

答案 0 :(得分:1)

您可以尝试如下使用UNION ALL

select S.SaleID,C.CustomersID,S.HouseID,NumOfRooms,CuCity,SaleDate
    from sale S,Customers C,SaleToCustomers STC,House H 
    where S.SaleID = STC.SaleID and 
          C.CustomersID = STC.CustomersID and
          S.HouseID = H.HouseID and
          C.CuCity = 'Holon' and
     YEAR(SaleDate) <= 2016 
Union all
select H.HouseID AS NewHouseID,null,null,NumOfRooms AS NewNumOfRooms,C.CityName,null
     from Sale S,House H,City Cu
     where S.SaleDate is null and
     H.HouseID = S.HouseID and
     C.CityID = 4

答案 1 :(得分:1)

我不知道您真正希望它返回什么,但这种方式行不通。这些不是两个选择,而是select in select,这意味着内部选择的结果将用作外部selects where子句中的条件。但是in语法只允许您从内部的一个值集返回一个值(这意味着一个列,可以包含值和null)。

如果您提供输入数据和预期输出的全面示例,社区可能会帮助您找到解决方案。

PS:您的屏幕截图显示了两个结果集,并非所有客户端数据库都支持。但是,没有任何一条语句可以返回多个结果集。您需要运行多个语句(一个脚本)或一个存储过程。