쉼표로 구분된 조인 필드로 테이블 조인
여러 테이블의 데이터를 통합할 때 다음을 포함하는 필드에서 조인을 수행해야 할 수도 있습니다. 쉼표로 구분된 목록. 이는 기존 조인 방법에 문제가 될 수 있습니다. 다음 시나리오를 고려하십시오.
시나리오:
두 개의 테이블, 카테고리 및 영화가 있습니다. 카테고리 테이블에는 고유 ID와 이름이 있는 카테고리가 포함되어 있습니다. 영화 테이블에는 여러 카테고리 ID를 쉼표로 구분된 목록으로 저장하는 카테고리 열이 포함되어 있습니다. 작업은 영화 테이블에서 카테고리 열을 제외하고 대신 카테고리 테이블에서 일치하는 카테고리 이름을 배열로 선택하여 이러한 테이블을 조인하는 것입니다.
해결책:
이 문제를 극복하기 위해 표준 조인 구문을 수정하는 방법을 사용할 수 있습니다.
select m.id, group_concat(c.name) from movies m join categories c on find_in_set(c.id, m.categories) group by m.id
이 쿼리에서는 find_in_set() 함수가 조인 조건 내에서 사용됩니다. 이 함수는 카테고리 테이블의 카테고리 ID가 영화 테이블의 쉼표로 구분된 카테고리 ID 목록에 있는지 확인합니다.
group_concat() 함수는 SELECT 절에서 일치하는 모든 카테고리 이름을 연결하는 데 사용됩니다. 배열로. group by 절을 사용하면 데이터가 영화 ID별로 그룹화되어 관련 카테고리 이름과 함께 각 영화에 대해 하나의 행이 생성됩니다.
예:
샘플을 고려하세요. 질문에 제공됨:
테이블 카테고리:
id | name |
---|---|
1 | Action |
2 | Comedy |
4 | Drama |
5 | Dance |
테이블 동영상:
id | categories |
---|---|
1 | 2,4 |
2 | 1,4 |
4 | 3,5 |
수정된 실행 조인 쿼리는 다음 출력을 생성합니다.
테이블 출력:
id | categories |
---|---|
1 | Comedy,Drama |
2 | Action,Drama |
4 | Other,Dance |
이 결과에서는 영화 테이블의 카테고리 열이 제외되었으며 해당 카테고리 테이블의 카테고리 이름이 각 영화에 대한 배열로 선택되었습니다.
위 내용은 쉼표로 구분된 조인 필드를 사용하여 테이블을 조인하는 방법: SQL 솔루션?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!