我刚刚遇到了另一个SQL问题。我真的需要抽出一些时间来正确地学习。使用不同的外键从查询中选择行?
无论如何,我有这个查询,别人写道,它从几个不同的表中获取值。
现在多个项目可以具有相同的ProductID。因此,可能有3个项目返回所有具有相同ProductID但具有不同描述等等。
我想仅为每个ProductID选择1个项目。我尝试过使用DISTINCT和group,但是我收到了很多错误。这也适用于ACCESS数据库。
我认为这是因为选择查询中使用的逻辑搞乱了我的分组。
下面是该查询(我曾尝试将其格式化好一点,使用的在线工具,但它仍然是一个巨大的混乱)
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])
任何人都可以发布此速战速决?由于
该代码是一个血腥的迷宫。我尝试了格式化,但是到了晚上,我失去了耐心。你可以把它格式化成清晰的东西吗?或者可能发布简化版本? – Eric 2009-08-18 03:06:58
@Eric,这里有同样的故事......试图格式化它,但放弃了。 – 2009-08-18 03:09:35
好吧,我知道它很大,加上我已经给出的代码有12次这样的代码!这是一个噩梦,我会做出编辑并发布一个更好的 – ddd 2009-08-18 03:15:07