SELECT w.tech AS tech,
w.wpcddate AS job_date,
w.corp AS corp,
w.house AS house_number,
w.cust AS cust_number,
h.zipcode AS zipcode
FROM fsm_m_wipmaster w,
fsm_m_zipmaster z,
fsm_m_housemaster h,
fsm_m_custmaster c
WHERE c.corp(+) = w.corp
AND c.house(+) = w.house
AND c.cust(+) = w.cust
AND h.corp(+) = w.corp
AND h.house(+) = w.house
AND h.cust(+) = w.cust
AND z.corp(+) = w.corp
AND z.zipbeg IS NULL
AND h.zipcode IS NOT NULL
AND w.tech IS NOT NULL
ORDER BY w.corp;
查詢轉換後
SELECT w.tech AS tech,
w.wpcddate AS job_date,
w.corp AS corp,
w.house AS house_number,
w.cust AS cust_number,
h.zipcode AS zipcode
FROM fsm_m_housemaster h
LEFT OUTER JOIN
fsm_m_custmaster c
ON h.cust = c.cust
AND h.corp_seq = c.corp_seq
AND h.house = c.house
LEFT OUTER JOIN
fsm_m_wipmaster w
ON h.cust = w.cust
AND h.house = w.house
AND h.corp_seq = w.corp_seq
LEFT OUTER JOIN fsm_m_zipmaster z
ON h.corp_seq = z.corp_seq AND z.zipbeg IS NULL
WHERE w.tech IS NOT NULL
ORDER BY w.corp;
我似乎打破我的頭,爲什麼查詢轉換之後沒有返回與之前查詢相同的結果。 我知道我在這裏丟失了一些愚蠢的東西 任何人都可以發現明顯的?
這不是一個問題... – Neal
條件'z.zipbeg是null','h.zipcode不null'和' w.tech IS NOT NULL'不要使用'(+)'語法,因此它們不能成爲ON子句的一部分,但必須留在WHERE子句中。如果我沒有弄錯,他們使用'(+)'語法在原始查詢中沒有任何影響,因爲這些相同的條件會將外連接變成內連接。所以看起來像一個外連接一直是內連接。 – Codo
@codo這是有道理的 – Sudhakar