단일 레코드에 관련된 여러 레코드를 검색하는 방법
데이터베이스 관리에서는 여러 테이블에서 데이터를 가져와야 하는 경우가 많습니다. 관계를 통해 연결됩니다. 이 기사는 특정 조직에 대한 모든 정보와 직원의 이름을 검색하는 효율적인 방법을 보여줍니다.
여러 관련 레코드를 얻으려면 SQL에서 표준화되지 않은 그룹 연결을 사용해야 합니다. -92 또는 SQL-99. 따라서 데이터베이스별 솔루션이 필요합니다.
MySQL
MySQL은 그룹 연결을 위한 GROUP_CONCAT 함수를 제공합니다. 원하는 데이터를 검색하려면 다음 쿼리를 실행하십시오.
select o.ID, o.Address, o.OtherDetails, GROUP_CONCAT( concat(e.firstname, ' ', e.lastname) ) as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
PostgreSQL
PostgreSQL 9.0에서는 STRING_AGG 함수를 도입했습니다.
select o.ID, o.Address, o.OtherDetails, STRING_AGG( (e.firstname || ' ' || e.lastname), ', ' ) as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
오라클
오라클 그룹 연결을 위해 LISTAGG 제공:
select o.ID, o.Address, o.OtherDetails, LISTAGG(e.firstname || ' ' || e.lastname, ', ' ) as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
MS SQL Server
PostgreSQL과 마찬가지로 MS SQL Server는 그룹 연결을 위해 STRING_AGG를 사용합니다.
select o.ID, o.Address, o.OtherDetails, STRING_AGG(e.firstname || ' ' || e.lastname, ', ' ) as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
대체 해결 방법
이전 데이터베이스 버전이나 비호환 데이터베이스의 경우 대체 방법이 있습니다.
select o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees from organization o
이러한 데이터베이스별 솔루션을 구현하거나 fallback 방법을 사용하면 원하는 정보를 효율적이고 정확하게 검색할 수 있습니다.
위 내용은 SQL 데이터베이스에서 여러 관련 레코드를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!