>데이터 베이스 >MySQL 튜토리얼 >SQL 데이터베이스에서 여러 관련 레코드를 효율적으로 검색하는 방법은 무엇입니까?

SQL 데이터베이스에서 여러 관련 레코드를 효율적으로 검색하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-28 14:28:16691검색

How to Efficiently Retrieve Multiple Related Records in SQL Databases?

단일 레코드에 관련된 여러 레코드를 검색하는 방법

데이터베이스 관리에서는 여러 테이블에서 데이터를 가져와야 하는 경우가 많습니다. 관계를 통해 연결됩니다. 이 기사는 특정 조직에 대한 모든 정보와 직원의 이름을 검색하는 효율적인 방법을 보여줍니다.

여러 관련 레코드를 얻으려면 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

대체 해결 방법

이전 데이터베이스 버전이나 비호환 데이터베이스의 경우 대체 방법이 있습니다.

  1. 조직 ID를 입력으로 사용하고 연결된 직원을 출력하는 저장 프로시저를 만듭니다. 이름.
  2. 다음에서 이 저장 프로시저를 사용하세요. 쿼리:
select 
  o.ID, o.Address, o.OtherDetails,
  MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees
from 
  organization o

이러한 데이터베이스별 솔루션을 구현하거나 fallback 방법을 사용하면 원하는 정보를 효율적이고 정확하게 검색할 수 있습니다.

위 내용은 SQL 데이터베이스에서 여러 관련 레코드를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.