Récupération de plusieurs enregistrements basés sur des relations
Lorsque vous traitez des tables de base de données avec des relations, une tâche courante consiste à récupérer des informations à partir de plusieurs tables en fonction de une relation spécifique. Par exemple, considérons deux tables : Organisation et Employé, où une organisation peut avoir plusieurs employés. L'objectif est de récupérer toutes les informations sur une organisation particulière, y compris le prénom de tous ses employés, dans un seul jeu d'enregistrements.
Solutions spécifiques aux bases de données
Le L’approche appropriée pour cette tâche varie en fonction du système de base de données utilisé. Certains systèmes de bases de données populaires offrent des fonctions ou des fonctionnalités spécifiques qui peuvent faciliter la concaténation de groupes, le processus de combinaison de plusieurs valeurs en une seule chaîne :
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
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, 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
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
Solutions de secours
Dans les systèmes de bases de données dépourvus de fonctions natives de concaténation de groupe ou pour les anciennes versions des bases de données prises en charge, des solutions de secours peuvent être employé :
select o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees from organization o
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!