SELECT s.id, s.show_start, s.show_end, s.bekeken, s.website, s.afbeelding,
(SELECT titel FROM serie_details WHERE taalcode = 'oo' AND serie_id = s.id) AS titel,
(SELECT beschrijving FROM serie_details WHERE taalcode = 'oo' AND serie_id = s.id) AS beschrijving,
ARRAY_AGG(d.titel) AS alt_titels,
(SELECT ARRAY_AGG(num[1]) FROM afleveringen WHERE serie_id = s.id) AS afleveringen,
(SELECT COUNT(id) FROM afleveringen WHERE serie_id = s.id) AS totaal
FROM series AS s
LEFT JOIN serie_details AS d ON d.serie_id = s.id
WHERE s.id = 6
GROUP BY s.id, s.show_start, s.show_end, s.bekeken, s.website, s.afbeelding
series
이 시리즈와 테이블, serie_details
시리즈에 대한 대체 이름을 포함하고 afleveringen
그 에피소드에 대한 에피소드 번호 및 제목을 포함합니다.하위 쿼리를 덜 사용하도록이 SQL을 변환하는 방법은 무엇입니까?
serie_details
테이블에 여러 행이 있기 때문에 여러 개의 JOIN을 사용해 보았지만 중복 결과가 나타납니다. 검색어 :
SELECT s.id, s.show_start, s.show_end, s.bekeken, s.website, s.afbeelding, COUNT(a.id) AS totaal,
(select titel from serie_details where taalcode = 'oo' and serie_id = s.id) AS titel,
(select beschrijving from serie_details where taalcode = 'oo' and serie_id = s.id) AS beschrijving,
ARRAY_AGG(a.num[1]) AS afleveringen,
ARRAY_AGG(d.titel) AS alt_titels
FROM series AS s
LEFT JOIN afleveringen AS a ON a.serie_id = s.id
LEFT JOIN serie_details AS d ON d.serie_id = s.id
WHERE s.id = 6
GROUP BY s.id, s.show_start, s.show_end, s.bekeken, s.website, s.afbeelding
하위 쿼리가 부족한 이유가 있습니까? 기본적으로 작은 데이터 집합에서 JOIN을 수행하는 것입니다. –
순수하게 성능상의 이유로. – EarthMind
성능이 개선 될 것이라는 것을 알고 있습니까? – ChrisF