我有一张表,其中一列非常依赖于其他一些表
我无法更改表格,我无法更改所用参数的名称
这是我的疑问:
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?
编辑: 表结构:
答案 0 :(得分: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