나는 4 개의 테이블 a,b,c,d
을 가지고 있습니다. 표 a
에는 id, name
의 쌍이 있습니다. 표 b
에 나는 idx, idy
의 쌍을 가지고 있습니다. b.idy
은 a.id
테이블에서 제공됩니다. 테이블 c, d
에는 테이블 b.idx
과 관련된 id, value
의 쌍이 있습니다.단순하지만 중첩 된 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)
문제는 때때로이 너무 AND
제로 레코드를 반환합니다 c, d
테이블에없는 기록이 있지만에서 중 사용할 수있는 경우 내가 결과를 가질 필요가 c
또는 d
. 또한 OR
두 테이블에 대해 다른 행을 반환하기 때문에 사용할 수 없습니다.
UNION
을 사용하거나 심지어 중첩 된 SELECT
을 사용하는 솔루션이 있다고 생각합니다. 나는 JOIN
을 사용하지 않거나 분리 된 quires를 사용하는 것을 선호합니다.
미리 감사드립니다.
업데이트 :
JOIN
성능이다 사용 피하는 이유. 지금 작업하고있는 구조는 이보다 훨씬 복잡하므로 JOIN
으로는 향후 성능에 심각한 문제가있을 것이라고 확신합니다.
왜 조인을 선호하지 않는가? 이것은 고전적인 LEFT JOIN 사용 사례로 보입니다. – Vikdor
원래 게시물의 이유를 설명했습니다 – Mahdi
그리고 실제로 당신은 이미 JOIN을 사용하고 있습니다. 'FROM a, b, c, d '는 무엇을 의미한다고 생각하니? 성능에 관해서는, "올바른 결과를 얻지 못했습니다"심각한 성능 문제처럼 보입니다. – LSerni