Comment récupérer plusieurs enregistrements liés à un seul enregistrement
Dans la gestion de bases de données, il est souvent nécessaire de récupérer des données à partir de plusieurs tables qui sont connectés à travers des relations. Cet article démontre une méthode efficace pour récupérer toutes les informations sur une organisation spécifique ainsi que les prénoms de ses employés.
Le concept d'obtention de plusieurs enregistrements liés nécessite l'utilisation de la concaténation de groupes, qui n'est pas standardisée en SQL -92 ou SQL-99. Ainsi, des solutions spécifiques à la base de données sont nécessaires.
MySQL
MySQL fournit la fonction GROUP_CONCAT pour la concaténation de groupes. Pour récupérer les données souhaitées, exécutez la requête suivante :
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 a introduit la fonction 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
Oracle
Oracle fournit LISTAGG pour concaténation de groupe :
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
Similaire à PostgreSQL, MS SQL Server utilise STRING_AGG pour la concaténation de groupe :
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
Solution de secours
Pour les anciennes versions de bases de données ou bases de données non conformes, une méthode de secours existe :
select o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees from organization o
En mettant en œuvre ces solutions spécifiques aux bases de données ou en utilisant la méthode de repli, vous pouvez récupérer les informations souhaitées de manière efficace et avec précision.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!