0

我有一张表,其中一列非常依赖于一堆其他表

我无法更改表格,也无法更改所使用参数的名称

这是我的查询:

select *,(select sum(itemQuantity*(select itemPrice from Items where 
Items.itemID=OrderItems.itemID)) from OrderItems 
where OrderItems.orderNumber=Orders.orderNumber) as orderValue,
(select sum(itemQuantity) from OrderItems where OrderItems.orderNumber=Orders.orderNumber)
as orderItemQuantity from Orders  WHERE Orders.customerId =1 AND Orders.beenSupplied =1

这是此查询的结果:

在此处输入图像描述

如您所见,我有两次“orderValue”列,第一个 orderValue 是 Orders 表中的原始列,第二个 orderValue 来自查询中的“as”子句

我如何合并两列并在其中包含查询的输出,而不是不断插入的 0?

编辑:表结构: 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

1 回答 1

3

而不是使用,明确列出您希望选择SELECT *的列(从您的表中)。Orders

您还可以通过连接最外层查询中的表然后对每个订单进行分组来避免使用(非常低效的)相关子查询。

SELECT   Orders.orderNumber,
         Orders.customerId,
         Orders.orderDate,
         Orders.beenSupplied,
         Orders.purchaseDate,
         SUM(OrderItems.itemQuantity * Items.itemPrice) AS orderValue,
         SUM(OrderItems.itemQuantity)                   AS orderItemQuantity
FROM     Orders
    JOIN OrderItems USING (orderNumber)
    JOIN Items      USING (itemID)
WHERE    Orders.customerId   = 1
     AND Orders.beenSupplied = 1
GROUP BY Orders.orderNumber
于 2013-10-19T16:58:30.570 回答