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
Modérateur
Dernière intervention
15 juillet 2011
35
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