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