Dans PostgreSQL, agréger une seule colonne tout en incluant d'autres colonnes dans la requête peut s'avérer fastidieux. Cependant, des solutions sont disponibles.
PostgreSQL 9.1 et versions ultérieures simplifie le processus. Lors de l'agrégation avec GROUP BY, il vous suffit d'inclure la clé primaire de la table. Ainsi, si foo1 est la clé primaire de tbl1, votre requête peut être simplifiée en :
SELECT foo1, foo2, foo3, foo4, foo5, foo6, string_agg(aggregated_field, ', ') FROM tbl1 GROUP BY 1 ORDER BY foo7, foo8;
Pour les requêtes avec plusieurs tables et relations, il peut être plus efficace de regroupez d’abord et rejoignez plus tard. Par exemple :
SELECT t1.foo1, t1.foo2, ... , t2.bar1, t2.bar2, ... , a.aggregated_col FROM tbl1 t1 LEFT JOIN tbl2 t2 ON ... ... LEFT JOIN ( SELECT some_id, string_agg(agg_col, ', ') AS aggregated_col FROM agg_tbl a ON ... GROUP BY some_id ) a ON a.some_id = ?.some_id ORDER BY ...
Cela garantit que l'agrégation est effectuée uniquement dans la partie pertinente de la requête, améliorant ainsi les performances.
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!