From ab779a5d8e34f8761a48e5ce57cf09b561187e4b Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Sat, 10 Jun 2006 18:00:54 +0000 Subject: [PATCH] =?UTF-8?q?penser=20au=20cas=20des=20primary=20compos?= =?UTF-8?q?=C3=A9es=20dans=20la=20construction=20du=20group=20by=20sur=20j?= =?UTF-8?q?ointures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/public/criteres.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index b04242c3d8..9cb73c6af0 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -711,7 +711,7 @@ function calculer_jointure(&$boucle, $depart, $arrivee, $col='', $cond=false) list($dnom,$ddesc) = $depart; $id_primary = $ddesc['key']['PRIMARY KEY']; - $id_field = $dnom . '.' . $id_primary; + $keys = preg_split('/,\s*/', $id_primary); $id_table = ""; $cpt = &$num[$boucle->descr['nom']][$boucle->id_boucle]; foreach($res as $r) { @@ -734,12 +734,15 @@ function calculer_jointure(&$boucle, $depart, $arrivee, $col='', $cond=false) } // la clause Group by est en conflit avec ORDER BY, a completer - if (!$pk && !in_array($id_field, $boucle->group)) { - $boucle->group[] = $id_field; - // postgres exige que le champ pour GROUP soit dans le SELECT - if (!in_array($id_field, $boucle->select)) - $boucle->select[] = $id_field; - } + foreach($keys as $id_prim){ + $id_field = $dnom . '.' . $id_prim; + if (!$pk && !in_array($id_field, $boucle->group)) { + $boucle->group[] = $id_field; + // postgres exige que le champ pour GROUP soit dans le SELECT + if (!in_array($id_field, $boucle->select)) + $boucle->select[] = $id_field; + } + } $boucle->lien = true; return $n; -- GitLab