Doublons dans INNER JOIN

Résolu
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008 - 22 févr. 2007 à 02:48
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008 - 23 févr. 2007 à 22:46
Hello!


Voila mon problème :


J'ai deux tables :
TblCollectList
et
TblCollectNotes



C'est tables ont le champ AccNo en commun et je les joint a l'aide d'un
INNER JOIN
.


Jusqu'à là tout va bien. L'inconvénient c'est que si j'ajoute le champ
Category
de la table
TblCollectNotes
, j'ai des doublons que je n'arrive pas à éliminer avec un
DISTINCT.


Quelqu'un saurait comment faire afin que je n'ai pas ces doublons??


Voici ma requêtes:

SELECT
TblCollectList.AccNo,TblCollectList.CustomerName,
TblCollectList.Lang,TblCollectList.SumOfAmountDue,
TblCollectList.ActDate,
TblCollectNotes.Category
,MAX(TblCollectNotes.NoteID)

 

FROM TblCollectList,TblCollectNotes


WHERE TblCollectList.AccNo TblCollectNotes.Accno

AND TblCollectList.[SumOf30-60 Due]=0 AND TblCollectList.[SumOf60-90
Due]=0 AND TblCollectList.[SumOf90-120 Due]=0 AND
TblCollectList.[SumOf120-150 Due]=0 AND TblCollectList.[SumOf150-180
Due]=0 AND TblCollectList.[SumOf>180 Due]=0


GROUP BY TblCollectList.AccNo,TblCollectList.CustomerName,

TblCollectList.Lang,TblCollectList.SumOfAmountDue,TblCollectList.ActDate,

TblCollectNotes.Category





ORDER BY TblCollectList.CustomerName

3 réponses

leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
23 févr. 2007 à 22:46
La bonne réponse était :

$QueryCustomer = "SELECT C.AccNo, CustomerName, Lang, SumOfAmountDue, ActDate, B.MaxID, D.Category
FROM TblCollectList C
LEFT OUTER JOIN
 (
  SELECT AccNo, max(NoteID) As MaxID FROM TblCollectNotes
  Group by AccNo
 ) B ON B.AccNo = C.AccNo
LEFT OUTER JOIN
 (
  SELECT NoteID, Category FROM TblCollectNotes
 ) D ON D.NoteID = B.MaxID
WHERE SumOfAmountDue<>0 AND [SumOf30-60 Due]=0 AND [SumOf60-90 Due]=0 AND [SumOf90-120 Due]=0 AND [SumOf120-150 Due]=0 AND [SumOf150-180 Due]=0 AND [SumOf>180 Due]=0
";
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
23 févr. 2007 à 21:25
Salut

Ta requete n'a pas de inner join, elle fait un produit cartesien.

Peux-tu mettre un tableau ou un script de 3 4 enregistrement qui produit ton probleme pour mieux analyser.
0
leviz Messages postés 68 Date d'inscription jeudi 20 octobre 2005 Statut Membre Dernière intervention 10 juin 2008
23 févr. 2007 à 22:44
J'ai résolu mon problème,  je vous remercie! J'avais simplement oublié de mettre une condition dans ma clause WHERE et j'ai aussi oublié de mettre la clause INNER JOIN dans mon exemple (sorry).

Thank you very much guys!
0
Rejoignez-nous