From e87e56d1b3b16acc34bf694014f4670ad1cea0f8 Mon Sep 17 00:00:00 2001 From: LeeWxx <dnckd0903@naver.com> Date: Thu, 5 Dec 2024 23:32:39 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=A1=B0=ED=95=A9=20=ED=95=84=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/repositories/partRepository.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/repositories/partRepository.js b/src/repositories/partRepository.js index e93675b..feb5c6d 100644 --- a/src/repositories/partRepository.js +++ b/src/repositories/partRepository.js @@ -72,18 +72,24 @@ const PartRepository = { async getFilteredCombinations(queryValues) { const query = ` - SELECT - c.id AS combination_id, - array_agg(r.part_id) AS partIds - FROM combinations c - LEFT JOIN relations r ON c.id = r.combination_id - WHERE r.combination_id IN ( - SELECT DISTINCT combination_id + WITH input_parts AS ( + SELECT array_agg(unnest) AS required_parts + FROM unnest($1::int[]) AS unnest + ), + parts AS ( + SELECT + combination_id, + array_agg(part_id ORDER BY part_id) AS existing_parts FROM relations - WHERE part_id = ANY($1::int[]) + GROUP BY combination_id ) - GROUP BY c.id; + SELECT + p.combination_id, + p.existing_parts AS partIds + FROM parts p, input_parts i + WHERE p.existing_parts @> i.required_parts; `; + const result = await pool.query(query, queryValues); return result.rows; }, -- GitLab