[英]Combining two SQL queries into one
我嘗試合並兩個SQL查詢(它們都獨立工作):
查詢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))
查詢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))
這很難回答,因為我不知道您的表之間的關系。 在“工作”查詢中,您正在測試RIGHT表(N2)上的條件,該表與LEFT OUTER一起加入是因為它是可選的-也許這是正確的,但看起來並不正確。
將所有聯接都轉換為內部聯接又如何呢?
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"
inner join "dbo"."AnimalFeedDailyConsumption" N3 on N3."OID" = N1."OID"
inner join "dbo"."BasicAnimal" N2 on N1."BasicAnimal" = N2."OID"
where N1."LactationNumber" = 4
and N1."GCRecord" is null
and N2."Number" = 511
風格注釋:順便說一句,(對我而言)很難理解哪個表是N0,N1,N3和N3。 為什么不將它們別名為BA,AHD,DM和AFDC? 另外,括號過多(多余)。
注意:由於我沒有您的表格或數據,因此無法測試。 您如何創建SQLfiddle?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.