Bonjour,
j'ai à ma charge de réaliser un algorithme pour test. En ce moment je bloque sur une requête SQL que je trouve assez difficile.
Au début j'avais cru que j'avais fait une bonne requête, mais au final je me suis rendu compte que ce n'était pas le cas.
Je doit réaliser un filtre sur des produits selon des critères défini dans la base qui sont cumulé.
les tables :
Produit : idProduit int, nom, Critère1, Critère2, etc...
Filtre : idFiltre int, nom nvarchar;
ConditionFiltre : idConditionFiltre int, critèreFiltre int, #idFiltre_filtre int
ConditionFiltreValeurList : idConditionFiltreValeurList int, valeurConditionFiltre nvarchar, #idConditionFiltre_ConditionFiltre int
Ce que j'ai fait :
dans mon code si le produit appartient à au moins un de ces critères il apparaîtra, alors qu'il faut afficher les produits qui sont avec toutes ces critères
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT * FROM Produit, Filtre INNER JOIN ConditionFiltre ON idFiltre = idFiltre_filtre LEFT JOIN ConditionFiltreValeurList ON idConditionFiltre = idConditionFiltre_ConditionFiltre WHERE idFiltre = 60 AND ((critèreFiltre = 1 AND valeurConditionFiltre = Critère1) OR (critèreFiltre = 2 AND valeurConditionFiltre = Critère2) OR (critèreFiltre = 3 AND valeurConditionFiltre = Critère3) OR (critèreFiltre = 4 AND valeurConditionFiltre = Critère4) OR etc...)
Si je met des "AND" au lieu des "OR" il n'y aura aucun produit, c'est normal puisque "critèreFiltre" ne sera jamais égale à 1, 2, 3, 4, etc dans une seule ligne de la table générer.
tout en sachant le problème de conversion puisque les critères sont des données différentes (int, float, date, string) alors que "valeurConditionFiltre" est en string.
je suis quasiment certain que j'ai oublié des détail à vous montré.
Pouvez-vous m'aider svp à résoudre cette recette parce que je suis au même point depuis plusieurs jours?
merci d'avance![]()






Répondre avec citation







Partager