1 pièce(s) jointe(s)
Requête select produits uniques plusieurs tables liées
Bonjour,
Je viens vers vous pour une piste concernant une requête sur des produits d'une vente en ligne.
En gros, j'ai une grosse requête qui doit me sortir les produits d'une sous-catégorie données, et dans cette requête, je dois remonter tout un tas de colonnes en une seule requête grâce à une procédure stockée.
Or la table produits est liée à différentes tables, reliées entre-elles par des jointures.
Et le souci, c'est que ma table principale "Produits", et bien je ne dois remonter qu'une seule fois chaque produit dans le listing bien sûr, sauf que comme chaque produit peut être lié plusieurs fois, cela me remonte des produits en double. Avec un distinct, le souci, d'une c'est trop long, de deux, comme les id que je dois récupérer dans ma requête sont différent, un distinct ne me permet pas de supprimer les "faux doublons".
En fait, un produit est lié à des caractéristiques. ces caractéristiques sont liées à un prix.
Du coup, pour, par exemple, un pull-over qui est mon "produit", je peux avoir la caractéristique "bleu", une autre "rouge" et chaque caractéristique est liée à un prix.
Quand je fais ma requête, cela me ressort 2 fois le pull-over bien-sur en rouge et en bleu.
mais comment faire pour ne sortir qu'une fois le pull-over en ne prenant que la première caractéristique ? je suis obligé pour calculer le prix ! si possible en triant sur la caractéristique la moins chère.
Pour infos, je vous donne un schéma rapide de ma base.
Egalement ma requête actuelle (simplifiée pour comprendre rapidement le problème) :
Code:
1 2 3 4 5 6 7 8 9
| select * from PRODUIT as p
inner join pivot_cat_produits as piv on piv.id_produit = p.id
inner join sous_categorie as cs on cs.id = piv.id_sous_cat
inner join categorie as c on c.id = cs.id_parent
inner join caracteristiques as pf on pf.id_produit = p.id
inner join prix as px on px.id_caracteristique = pf.id
where (.....) and cs.id=120
order by cs.produit_classement |