JOINTURE SQL: problème de doublon

  • Auteur de la discussion Auteur de la discussion arnoweb
  • Date de début Date de début
WRInaute discret
Bonjour,

Je ne comprends pas pourquoi ma requête SQL fait des doublons

$sql = "SELECT ads_id, xoops_catads_ads.cat_id, ads_title, postcode, tagged, colour, sex, ads_type,suspend, view, age, created, up, uptimestamp, xoops_catads_ads.uid, com_itemid, com_uid, proposition_artiste,title,xoops_catads_cat.cat_id,xoops_users.uid,xoops_users.uname,xoops_users.user_avatar
FROM xoops_catads_ads
LEFT JOIN xoops_catads_cat ON xoops_catads_cat.cat_id = xoops_catads_ads.cat_id
LEFT JOIN xoops_xoopscomments ON xoops_xoopscomments.com_itemid = xoops_catads_ads.ads_id
LEFT JOIN xoops_users ON xoops_users.uid = xoops_catads_ads.uid
WHERE suspend = 0 ".$etatsql1." ".$etatsql2." ".$etatsql3."
ORDER BY xoops_catads_ads.ads_id DESC
LIMIT ".$limit_start.", ".$pagination."";


La colonne ads_id est l'identifiant unique de la question.
En faisant mysql_fetch_assoc je me retrouve avec plusieurs fois le même ads_id

Avez-vous une idée du pourquoi ça fait ça avec une jointure mais pas avec requête simple ?



Merci :-)
 
WRInaute passionné
Bonjour,

As-tu essayé avec un GROUP BY ?

du genre

Code:
.... 
GROUP BY xoops_catads_ads.ads_id
ORDER BY xoops_catads_ads.ads_id DESC
LIMIT ".$limit_start.", ".$pagination."";

?
 
WRInaute discret
Tu es génial c'est ça :-)

Merci infiniment !

Grâce à toi je viens d'éviter probablement de nombreuses heures de galère.

:D
 
Nouveau WRInaute
Bonjour à tous.

Je suis novice en SQL, et je me retrouve avec des doublons, j'imagine qu'il s'agit d'un problème de jointure.

pouvez-vous m'aidez svp?

SELECT ART.REF, ART.DES, ART.TIERS, ART.CDEFOQTE, ART.STCOD, MOUV.CDNO, MOUV.CDDT, MOUV.BLDT, MOUV.BLNO, MOUV.FADT, MOUV.FANO, MOUV.CDQTE, MOUV.TICOD, MOUV.PICOD, MOUV.CDCE4, MOUV.DEPO, MVTL.DELDEMDT, MVTL.DELACCDT, MVTL.DELREPDT
FROM ERPDIVALTO.dbo.ART ART, ERPDIVALTO.dbo.FOU FOU, ERPDIVALTO.dbo.MOUV MOUV, ERPDIVALTO.dbo.MVTL MVTL
WHERE MOUV.REF = ART.REF AND MOUV.CDNO = MVTL.PINO AND ART.TIERS = FOU.TIERS AND ((MOUV.CDNO=61602248) AND (MOUV.TICOD='F') AND (MOUV.CDCE4='1') AND (MOUV.DEPO='50'))


pour info CDNO et PINO correspondent au même champ.

Merci d'avance pour votre aide.
Cordialement,
 
Discussions similaires
Haut