L'attribut DISTINCT concerne la ligne constituée par toutes les colonnes qui sont recherchées. Il ne concerne pas que la première colonne. Le problème ici, c'est la colonne cat_id qui peut prendre deux valeurs différentes, donc, forcément, la requête considèrera que le résultat contient deux lignes différentes qui seront :
845, produits845, description, 300503
845, produits845, description, 300504 |
Pour n'avoir qu'une seule ligne, il faut faire la même requête sans demander cat_id.
Ou bien adapter la requête pour n'avoir qu'un seul cat_id, par exemple prendre le plus petit quand il y a en plusieurs avec :
SELECT DISTINCT produits.id,
produits.libel,
produits.description,
min(liaison_cat_prod.cat_id) FROM produits,liaison_cat_prod WHERE liaison_cat_prod.cat_id LIKE '".$cat."%' AND produits.id=liaison_cat_prod.prod_id AND produits.actif='1' GROUP BY produits.id,
produits.libel,
produits.description
ORDER BY liaison_cat_prod.cat_id ASC LIMIT 20
|
Edit : Chris500 a été plus rapide, bravo !
Message édité par olivthill le 13-02-2006 à 22:18:43