订购表格,产品及其数量有多列相应, 比如产品的prod1,prod2,prod3,prod4和qty1,qty2,qty3,qty4。 因为对于一个订单,可能有超过1个产品,并且每个产品具有不同的数量,如某些客户可能订购的 两个手机'三星J1' 1件(数量)和' samsung s6' 2件(数量)。
如果我在订单表上查询特定产品,如
select *
from order
where (prod1 like '%j1%' or prod2 like '%j1%' or
prod3 like '%j1%' or prod4 like '%j1%' )
它会给我列出所有' j1'产品的订单。通过这种方式,我可以计算订单的数量,但我想计算每个订单的数量。
但问题是我不知道我应该如何发现这个' j1'产品是prod1或prod2或prod3或prod4,因为如果我可以检查它的prod2 然后我将计算qty2以及是否' j1'就像prod4然后我会算qty4。
例如,一个订单可能包含' j1'作为prod1或prod2或prod3或prod4。从上面的quanry我们可以检查' j1'产品按此顺序存在,但如何 我们也可以为每个订单计算该数量,因为每个订单的每个订单的数量可能不同。答案 0 :(得分:0)
我同意戈登的评论。您的数据模型存在缺陷。如果客户想要订购超过4种不同的产品,会发生什么?理想情况下,您的数据表的设置类似于:
CREATE TABLE OrderLines
(
OrderLinesID int IDENTITY -- Primary key
, FK_OrderID int NOT NULL -- Foreign key to Order table
, ProductID int NOT NULL -- Foreign key to Products table
, Quantity int NOT NULL
, .... -- Any additional fields you want to add
)
这样,您可以使用以下内容生成预期结果:
SELECT
ProductID
, COUNT DISTINCT FK_OrderID -- Count orders containing selected product
, SUM(QUANTITY) -- Amount of selected product sold in this order
FROM
OrderLines
WHERE
ProductID = 1 -- Id for J1, from the Product Table
GROUP BY
ProductID
(请注意这是伪代码和简约的表格设计。在现实生活中,你可能会有更多细节)