我似乎无法设法将来自同一表的两个选择都加入。
到目前为止,我要查询的是:
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)
我希望同时显示两个选择,也许是这样的:
只有一个选择而不是两个选择。
答案 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:您的屏幕截图显示了两个结果集,并非所有客户端数据库都支持。但是,没有任何一条语句可以返回多个结果集。您需要运行多个语句(一个脚本)或一个存储过程。