Heim > Datenbank > MySQL-Tutorial > Wie kann man mehrere verwandte Datensätze in SQL-Datenbanken effizient abrufen?

Wie kann man mehrere verwandte Datensätze in SQL-Datenbanken effizient abrufen?

Patricia Arquette
Freigeben: 2024-12-28 14:28:16
Original
687 Leute haben es durchsucht

How to Efficiently Retrieve Multiple Related Records in SQL Databases?

So rufen Sie mehrere Datensätze ab, die sich auf einen einzelnen Datensatz beziehen

Bei der Datenbankverwaltung ist es häufig erforderlich, Daten aus mehreren Tabellen abzurufen durch Beziehungen verbunden. Dieser Artikel zeigt eine effiziente Methode zum Abrufen aller Informationen über eine bestimmte Organisation sowie die Vornamen ihrer Mitarbeiter.

Das Konzept, mehrere zusammengehörige Datensätze zu erhalten, erfordert die Verwendung einer Gruppenverkettung, die in SQL nicht standardisiert ist -92 oder SQL-99. Daher sind datenbankspezifische Lösungen erforderlich.

MySQL

MySQL stellt die Funktion GROUP_CONCAT zur Gruppenverkettung bereit. Um die gewünschten Daten abzurufen, führen Sie die folgende Abfrage aus:

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
Nach dem Login kopieren

PostgreSQL

PostgreSQL 9.0 führte die Funktion STRING_AGG ein:

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
Nach dem Login kopieren

Oracle

Oracle stellt LISTAGG für Gruppen bereit Verkettung:

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
Nach dem Login kopieren

MS SQL Server

Ähnlich wie PostgreSQL verwendet MS SQL Server STRING_AGG für die Gruppenverkettung:

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
Nach dem Login kopieren

Fallback-Lösung

Für ältere Datenbankversionen oder nicht konform Für Datenbanken gibt es eine Fallback-Methode:

  1. Erstellen Sie eine gespeicherte Prozedur, die die Organisations-ID als Eingabe verwendet und die verketteten Mitarbeiternamen ausgibt.
  2. Verwenden Sie diese gespeicherte Prozedur in der Abfrage:
select 
  o.ID, o.Address, o.OtherDetails,
  MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees
from 
  organization o
Nach dem Login kopieren

Durch die Implementierung dieser datenbankspezifischen Lösungen oder die Verwendung der Fallback-Methode können Sie die gewünschten Informationen effizient und abrufen genau.

Das obige ist der detaillierte Inhalt vonWie kann man mehrere verwandte Datensätze in SQL-Datenbanken effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage