Je rencontre des problèmes avec un autre problème SQL. J'ai vraiment besoin de prendre un peu de temps pour apprendre cela correctement.Sélectionner les lignes de la requête avec une clé étrangère distincte?
De toute façon j'ai cette requête que quelqu'un d'autre a écrit et il obtient des valeurs de quelques tables différentes.
Maintenant plus d'un élément peut avoir le même ProductID. Il peut donc y avoir 3 éléments retournés tous avec le même ProductID mais ils ont des descriptions différentes, etc.
Je veux sélectionner seulement 1 article par ProductID. J'ai essayé d'utiliser DISTINCT et grouper par mais je reçois beaucoup d'erreurs. C'est aussi pour une base de données ACCESS.
Je pense que c'est à cause de la logique utilisée dans la requête select qui gâche mon groupement.
Voici la requête (je l'ai essayé de formater un peu mieux, utilisé un outil en ligne, mais il est encore un énorme gâchis)
SELECT tblproducts.productid,
tblproducts.categorycode,
tblproducts.scaletitle,
tblproducts.picture,
tblitems.cost,
tblitems.modelnumber,
tblitems.itemid,
Iif([tblitems]![tradeapproved],Iif(([tblitems]![markup]/100) <> 0,(Iif(([tblitems]![supplierdiscount]/100) <> 0,
[tblitems]![cost] - ([tblitems]![cost] * ([tblitems]![supplierdiscount]/100)),
[tblitems]![cost])) * ([tblitems]![markup]/100),
0) + Iif(([tblitems]![supplierdiscount]/100) <> 0,
[tblitems]![cost] - ([tblitems]![cost] * ([tblitems]![supplierdiscount]/100)),
[tblitems]![cost]) + [tblitems]![tradeapprovedcost] + [tblitems]![shippingcost],
Iif(([tblitems]![markup]/100) <> 0,(Iif(([tblitems]![supplierdiscount]/100) <> 0,
[tblitems]![cost] - ([tblitems]![cost] * ([tblitems]![supplierdiscount]/100)),
[tblitems]![cost])) * ([tblitems]![markup]/100),
0) + Iif(([tblitems]![supplierdiscount]/100) <> 0,
[tblitems]![cost] - ([tblitems]![cost] * ([tblitems]![supplierdiscount]/100)),
[tblitems]![cost]) + [tblitems]![shippingcost]) AS price
FROM (tblitems
INNER JOIN tblproducts
ON tblitems.productid = tblproducts.productid)
INNER JOIN tblsuppliers
ON tblproducts.supplierid = tblsuppliers.supplierid
WHERE tblproducts.categorycode = 'BS'
AND tblitems.tradeapproved = 0
AND tblsuppliers.active = on
AND tblitems.isaccessory = false
ORDER BY Iif([tblitems]![tradeapproved],Iif(([tblitems]![markup]/100) <> 0,(Iif(([tblitems]![supplierdiscount]/100) <> 0,
[tblitems]![cost] - ([tblitems]![cost] * ([tblitems]![supplierdiscount]/100)),
[tblitems]![cost])) * ([tblitems]![markup]/100),
0) + Iif(([tblitems]![supplierdiscount]/100) <> 0,
[tblitems]![cost] - ([tblitems]![cost] * ([tblitems]![supplierdiscount]/100)),
[tblitems]![cost]) + [tblitems]![tradeapprovedcost] + [tblitems]![shippingcost],
Iif(([tblitems]![markup]/100) <> 0,(Iif(([tblitems]![supplierdiscount]/100) <> 0,
[tblitems]![cost] - ([tblitems]![cost] * ([tblitems]![supplierdiscount]/100)),
[tblitems]![cost])) * ([tblitems]![markup]/100),
0) + Iif(([tblitems]![supplierdiscount]/100) <> 0,
[tblitems]![cost] - ([tblitems]![cost] * ([tblitems]![supplierdiscount]/100)),
[tblitems]![cost]) + [tblitems]![shippingcost])
Déposez une solution rapide pour cela? Merci
Ce code est un labyrinthe sanglant. J'ai essayé le formatage mais j'ai perdu patience jusqu'à tard dans la soirée. Pouvez-vous s'il vous plaît le formater à quelque chose de lisible? Ou peut-être afficher une version simplifiée? – Eric
@Eric, même histoire ici ... essayé de le mettre en forme, mais a abandonné. –
Ok, je sais que c'est énorme, en plus du code qu'on m'a donné ça en 12 fois comme ça! C'est un cauchemar de travailler avec, je vais faire les modifications et poster un meilleur – ddd