У меня есть два SQL-запросов (которые оба работают независимо друг от друга), что я пытаюсь совместить:Объединение двух запросов SQL в один
Query # 1:
select
N1."DateAndTime",
N0."Ration"
from
(("dbo"."AnimalFeedDailyConsumption" N0
inner join
"dbo"."AnimalHistoricalData" N1 on (N0."OID" = N1."OID"))
left join
"dbo"."BasicAnimal" N2 on (N1."BasicAnimal" = N2."OID"))
where
(N1."LactationNumber" = 4) and (N1."GCRecord" is null and (N2."Number" = 511))
Query # 2:
select
N2."Number",
N1."DIM",
N1."DateAndTime",
N1."LactationNumber",
N0."TotalYield"
from
(("dbo"."DailyMilk" N0
inner join
"dbo"."AnimalHistoricalData" N1 on (N0."OID" = N1."OID"))
left join
"dbo"."BasicAnimal" N2 on (N1."BasicAnimal" = N2."OID"))
where
(N1."LactationNumber" = 4) and (N1."GCRecord" is null and (N2."Number" = 511))
Я попробовал это что привело к нулям для '': Ration
select
N2."Number",
N1."DIM",
N1."DateAndTime",
N1."LactationNumber",
N0."TotalYield",
N3."Ration"
from
(("dbo"."DailyMilk" N0
inner join
"dbo"."AnimalHistoricalData" N1 on (N0."OID" = N1."OID"))
left join
("dbo"."AnimalFeedDailyConsumption" N3
inner join
"dbo"."AnimalHistoricalData" N1 on (N3."OID" = N1."OID"))
left join
"dbo"."BasicAnimal" N2 on (N1."BasicAnimal" = N2."OID"))
where
(N1."LactationNumber" = 4) and (N1."GCRecord" is null and (N2."Number" = 511))
Итак, я попытался это, который также привел к нулям для «» Ration:
select
N2."Number",
N1."DIM",
N1."DateAndTime",
N1."LactationNumber",
N0."TotalYield",
N3."Ration"
from
(("dbo"."DailyMilk" N0
inner join
"dbo"."AnimalHistoricalData" N1 on (N0."OID" = N1."OID"))
left join
"dbo"."AnimalFeedDailyConsumption" N3 on (N3."OID" = N1."OID")
left join
"dbo"."BasicAnimal" N2 on (N1."BasicAnimal" = N2."OID"))
where
(N1."LactationNumber" = 4) and (N1."GCRecord" is null and (N2."Number" = 511))
Спасибо Turophile. Когда все соединения соединяются как внутренние, запрос не возвращает никаких ошибок, но также и никаких данных. Желаю, чтобы я мог создать SQLfiddle, но база данных массивная, не была создана мной, и я просто новичок в sql. –
Ну, запрос, который я предоставил, будет возвращать все в таблицах, относящихся к объединениям, но отфильтрованных условиями 'WHERE'. Итак, попробуйте запустить запрос с удаленным одним условием, затем с удалением одного из других условий и т. Д., Чтобы узнать, какое влияние оказывает каждое условие. Вы можете сделать то же самое с каждой таблицей - если одно из соединений неверно и не приводит к совпадениям - так я бы отлаживал запрос. Также просмотрите данные своих таблиц и вручную проверите каждое из соединений, чтобы убедиться, что OID в одном - это тот же OID в другом. – Turophile
Обратите внимание, что если 'OID' находится в трех таблицах, он должен быть только PK в одном - остальные два будут FK и поэтому не уникальны. – Turophile