Как объединить два разных выбора из одних и тех же таблиц - PullRequest
0 голосов
/ 25 декабря 2018

Мне не удается объединить оба моих выбора из тех же таблиц.

На данный момент я получил следующий запрос:

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 голосов
/ 25 декабря 2018

Я не знаю, что вы действительно ожидаете, что это вернется, но это не сработает.Это не два выбора, это select in select, что означает, что результат внутреннего выбора используется в качестве условия в предложении внешнего выбора где.Но синтаксис in позволяет вам возвращать только один набор значений из внутреннего (то есть один столбец, который может иметь значения и нули).

Если вы приведете исчерпывающий пример входных данныхи ожидаемый результат, сообщество может помочь вам найти решение.

PS: на скриншоте показаны два набора результатов, которые поддерживаются не всеми клиентскими библиотеками данных.Однако ни один оператор не может вернуть несколько наборов результатов.Вам необходимо выполнить несколько операторов (сценарий) или хранимую процедуру.

0 голосов
/ 25 декабря 2018

Вы можете попробовать использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...