我有四個表a,b,c,d
。在表a
我有一對id, name
。在表b
我有一對idx, idy
。 b.idy
來自表a.id
。在表c, d
我有一對id, value
這是有關表b.idx
。簡單但嵌套的SELECT查詢
我必須執行這樣的查詢:
SELECT c.value, d.value
FROM a,b,c,d
WHERE a.name = "test" AND b.idy = a.id AND (c.id = b.idx AND d.id = b.idx)
的問題是有時有在表中丟失記錄c, d
所以AND
將返回零條記錄,但我需要的結果,如果有可以參閱c
或d
。此外,我不能使用OR
,因爲它也爲兩個表返回其他行。
我想會有一個解決方案,使用UNION
甚至只是嵌套SELECT
s。我更喜歡不使用JOIN
或使用單獨的quires。
在此先感謝!
更新:
之所以使用JOIN
是性能避免。我正在處理的結構現在比這個更復雜,所以我確信JOIN
在未來的將來我會遇到嚴重的性能問題。
爲什麼你不喜歡的JOIN?這似乎是一個經典的'LEFT JOIN'用例。 – Vikdor
我在原文中解釋了原因 – Mahdi
而實際上您已經在使用JOIN。你認爲'FROM a,b,c,d'是什麼意思?至於性能,「沒有得到正確的結果」看起來像是一個嚴重的性能問題... – LSerni