반응형
MySQL - 여러 JOIN 일치 항목에 열 추가
저는 질문이나 적어도 그것이 능숙하게 작동할 수 있는 방법을 찾는 데 어려움을 겪고 있습니다.문제를 요약하면 다음과 같은 두 가지 테이블이 있다고 가정합니다.
표 1:
id_product | id_interval |
---|---|
A1 | 1 |
A2 | 2 |
A3 | 3 |
표 2:
id_interval | id_interval | 묘사 |
---|---|---|
1 | 1 | 카테고리 1 IT 설명 |
1 | 2 | 카테고리 1 EN 설명 |
1 | 3 | 카테고리 1 DE 설명 |
2 | 1 | 카테고리 2 IT 설명 |
2 | 2 | 카테고리 2 EN 설명 |
2 | 3 | 카테고리 2 DE 설명 |
JOIN에 대해 id_category를 고려하면 각 언어에 대해 여러 일치 항목이 있습니다.제가 원하는 결과는 다음과 같습니다.
id_product | id_interval | IT_desc | EN_desc | DE_desc |
---|---|---|---|---|
A1 | 1 | 카테고리 1 IT 설명 | 카테고리 1 EN 설명 | 카테고리 1 DE 설명 |
A2 | 2 | 카테고리 2 IT 설명 | 카테고리 2 EN 설명 | 카테고리 2 DE 설명 |
따라서 하나의 항목에서 서로 다른 언어 설명을 보기 위해 일치하는 모든 항목을 여러 열에 표시합니다.제가 할 수 있었던 유일한 일은 매번 다른 언어에 대해 여러 개의 조인을 하는 것이었습니다. 그래서 다음과 같은 것들이 있었습니다.
SELECT *
FROM table1 AS t1
LEFT JOIN table2 AS t2_IT
ON t2_IT.id_lang = 1 AND t1.id_category = t2_IT.id_category
LEFT JOIN table2 AS t2_EN
ON t2_EN.id_lang = 2 AND t1.id_category = t2_EN.id_category
LEFT JOIN table2 AS t2_DE
ON t2_DE.id_lang = 3 AND t1.id_category = t2_DE.id_category
이 방법은 실제로 효과가 있지만, 더 많은 양의 데이터에 대해 느릴 수 있는, 매번 결합을 곱하는 것을 포함하지 않는 더 나은 대안이 있는지 궁금합니다.
여러분 감사합니다.
조인된 테이블에서 그룹화할 수 있습니다.
SELECT t1.`id_product`, t1.`id_category`, MAX(IF( `id_lang` = 1 , `description`, NULL)) IT_desc, MAX(IF( `id_lang` = 2 , `description`, NULL)) EN_desc, MAX(IF( `id_lang` = 3 , `description`, NULL)) DE_desc FROM table1 t1 INNER JOIN table2 t2 ON t1. `id_category` = t2.`id_category` GROUP BY t1.`id_product`, t1.`id_category`
id_product | id_category | IT_desc | EN_desc | DE_desc:--------- | ----------: | :------------------------ | :------------------------ | :------------------------A1 | 1 | 카테고리 1 IT 설명 | 카테고리 1 EN 설명 | 카테고리 1 DE 설명A2 | 2 | 카테고리 2 IT 설명 | 카테고리 2 EN 설명 | 카테고리 2 DE 설명
db<>여기로 이동
언급URL : https://stackoverflow.com/questions/70130599/mysql-add-columns-on-multiple-join-matches
반응형
'programing' 카테고리의 다른 글
SQL Management Studio에서 SQL XML 열을 쉽게 편집하는 방법 (0) | 2023.08.25 |
---|---|
링크뿐만 아니라 버튼에서 파이어폭스의 점선 아웃라인을 제거하는 방법은 무엇입니까? (0) | 2023.08.25 |
빌드를 사용할 때 분석 수집을 위한 각도 클리킹 중지 (0) | 2023.08.25 |
SSL을 사용하도록 설정하기 위해 Spring Boot에 .crt 추가 (0) | 2023.08.25 |
Angular ActivatedRoute 데이터가 빈 개체를 반환함 (0) | 2023.08.20 |