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