데이터베이스 정규화는 효율적인 데이터 관리에 중요하지만 때로는 프로젝트에서 정규화되지 않은 형식으로 기존 데이터를 처리해야 할 수도 있습니다. 이 문서에서는 주어진 열에서 쉼표로 구분된 값을 사용하여 두 테이블을 조인하는 기술을 살펴봅니다.
시나리오:
두 개의 테이블이 있다고 가정합니다.
메모 테이블:
직위 테이블:
우리의 목표는 이러한 테이블을 조인하고 forDepts 열을 Positions 테이블의 값과 연결하여 쉼표로 구분된 직위 이름으로 새 열을 생성하는 것입니다.
사용하는 솔루션 CONCAT_WS:
SELECT n.nid, CONCAT_WS(', ', p.name) AS DepartmentName FROM Notes n JOIN Positions p ON n.forDepts = p.id
그러나 이 접근 방식은 일치하는 모든 부서가 아닌 각 부서 ID에 대해 첫 번째 일치만 검색합니다.
FIND_IN_SET을 사용하는 솔루션:
SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) AS DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid
FIND_IN_SET 함수는 값이 다음과 같은지 확인합니다. 쉼표로 구분된 문자열로 표시됩니다. JOIN 조건에서 이를 사용함으로써 일치하는 모든 위치가 포함되도록 보장합니다. GROUP_CONCAT 함수는 검색된 직위 이름을 쉼표로 구분하여 연결합니다.
PHP 코드 통합:
주어진 PHP 코드를 수정하여 확장된 DepartmentName 열을 검색할 수 있습니다. 위에서 제안한 솔루션을 사용하여 mysql_query 문에 쿼리를 추가합니다. 이렇게 하면 코드가 쉼표로 구분된 위치 이름을 올바르게 내보낼 수 있습니다.
참고:
데이터베이스를 정규화하는 것이 이상적이지만 정규화되지 않은 데이터를 처리해야 하는 경우도 있습니다. 이 문서에서 설명하는 기술은 이러한 시나리오에서 테이블을 효율적으로 조인하고 쉼표로 구분된 값을 집계하기 위한 솔루션을 제공합니다.
위 내용은 열에서 쉼표로 구분된 값을 사용하여 테이블을 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!