|
|
|
|
madzorg, le vendredi 23 mai 2008 à 11:30:15Quelle requête sql utilises-tu ?
|
le GROUP BY est à mettre à la fin et je ne vois pas l'utilité du DISTONCT au début.
|
Décris les "trucs bizarres" pour que je puisse t'aider. |
Sans le distinct j'ai des mesures qui apparaissent plusieurs fois le meme jour.... Une meme mesure peut apparaitre sur plusieurs jours d'affilés (et c'est normal), mais une meme mesure plusieurs fois le meme jour ca c'est louche.
Avec un group by je me retrouve avec une seule ligne par jour alors qu'il peut y avoir plusieurs mesure. il m'affiche une seule mesure et "mange" les autres.. |
Si je comprends bien ton pb, tu dois utiliser une requête comme :
SELECT date AS "DatePlanif", idMesure AS "Mesure", typeOperation AS "Type", techno AS "Technologie", protocole AS "Protocole", client AS "Client", etat, commentaire FROM Mesure, Planifie, TypeMesure, Estdetype WHERE Planifie.Mesure_idMesure = Mesure.idMesure AND Mesure.idMesure = Estdetype.Mesure_idMesure AND TypeMesure.idTypeMesure = Estdetype.TypeMesure_idTypeMesure AND YEAR(Planifie.date) = '.$da.' AND MONTH(Planifie.date) = '.$noMois.'+1 AND (Mesure.etat = "plan" OR Mesure.etat = "fait") ORDER BY Planifie.date ASC Ni DISTINCT ni GROUP BY. SI tu as des mesures qui apparaissent plusieurs fois le même jour, ce doit être parceque les jointures de table remontent plusieurs combinaisons. Suppose deux tables : - table temp1 : 2 colonnes id et clef. Un seul enregistrement avec id=1 et clef=100 - table temp2 : 2 colonnes clef et lib. Deux enregistrements : 100, 1234 et 100, 4321 (ces deux enregistrements ont la même valeur de clef La requête select id,temp1.clef,lib from temp1,temp2 where temp1.clef=temp2.clef; retournera deux enregistrements bien qu'il n'y en ait qu'un dans temp1. La requête select DISTINCT id,temp1.clef,lib from temp1,temp2 where temp1.clef=temp2.clef; retournera les deux mêmes enregistrements car leurs valeurs sont bien distinctes (colonne lib) Par contre la requête select DISTINCT id,temp1.clef from temp1,temp2 where temp1.clef=temp2.clef; ne retourne qu'un enregistrement car la variable temp2.lib n'est plus retournée et ne distingue donc plus les deux enregistrements. Il faut que tu comprennes bien ce qui ci-dessus, que tu analyses pourquoi plusieurs enregistrements sont retournés par ta requête et si c'est normal. Si c'est normal, expose cela clairement et nous verrons ce qu'il est possible de faire. |