Requête multi-tables + DISTINCT ... [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 13-02-2006 à 22:11:44
Le problème est dans la requête et le distinct
Citation : |
Le Cat_Id étant différent pour chaque ligne 845 (300503 ou 300504), le résultat te ramene autant de lignes que Cat_Id
=> il te suffit de retirer le Cat_Id de ta requete.
Marsh Posté le 13-02-2006 à 22:15:39
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 |
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, |
Edit : Chris500 a été plus rapide, bravo !
Marsh Posté le 13-02-2006 à 21:46:27
Boujour
Bon je suis pas très callé en requetes sql, et là je commence à bloquer sur les requêtes complexes, alors je vous demande de l'aide.
J'ai 2 tables :
liaison_cat_prod
---------------------
| prod_id | cat_id |
---------------------
| 19 | 300213 |
| 12 | 300501 |
| 845 | 300503 |
| 1 | 300504 |
| 845 | 300504 |
| 843 | 300504 |
| 18 | 300504 |
----------------------
produits
---------------------------------------------
| id | libel | description |
---------------------------------------------
| 1 | produits1 | description |
| 12 | produits12 | description |
| 18 | produits18 | description |
| 19 | produits19 | description |
| 843 | produits843 | description |
| 845 | produits845 | description |
---------------------------------------------
Mon problème est que j'aimerai afficher les produits de la catégorie "3005" (donc contenant les sous catégories 300501,300502,etc...) sans avoir de doublons, c'est à dire en affichant 1 seul fois le produit qui pourrai se trouver dans plusieurs catégories (voir le produit 845).
Voici la requete que j'ai :
SELECT DISTINCT produits.id,produits.libel,produits.description,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'
ORDER BY liaison_cat_prod.cat_id ASC LIMIT 20
Mais le DISTINCT ne marche et celà m'affiche 2 fois le produits 845 ...
Comment puis-je y remédier ?
J'essayer de le faire en 2 requete pour voiri, mais j'aurai préféré le faire en 1 seule requete ...
Merci de votre aide
Au passage, auriez-vous un site ou un tutoriel sur les requêtes complexe ?
---------------
flick r