我有四个表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