2016-11-21 63 views
0

这里是我的MySQL查询:接收在MySQL Select语句所有条目(甚至是 '重复'

$query = "SELECT 
    ws_inventory.id, 
    ws_inventory.SKU AS inventory_sku, 
    ws_inventory.Quantity AS inventory_quantity, 
    ws_mastersku.SKU_1, 
    ws_mastersku.SKU_2, 
    ws_mastersku.SKU_4, 
    ws_mastersku.SKU_3, 
    ws_mastersku.MultSKU, 
    ws_mastersku.QtySKU, 
    ws_mastersku.AltSKU, 
    ws_mastersku.SKU, 
    ws_sold.SKU AS sold_sku, 
    ws_sold.Quantity AS sold_quantity 
FROM ws_sold 
    LEFT OUTER JOIN ws_mastersku 
    ON ws_sold.sku = ws_mastersku.SKU 
    LEFT OUTER JOIN ws_inventory 
    ON ws_mastersku.SKU_1 = ws_inventory.SKU 
    OR ws_mastersku.AltSKU = ws_inventory.SKU 
GROUP BY ws_sold.sku;"; 

但它只是返回WS16的第一个实例

enter image description here

即使我的表WS16有两个条目

enter image description here

如何修改我的查询,以便它将选择所有行? (在我的最后一张照片是省略行ID#4)

新的选择查询应该像(正如你可以在这里看到第四列)

1 WS16 91 (null) (null) (null) (null) 0 4 WS16 WS16X4-2 WS16X4-2 2 
2 WS3  97 (null) (null) (null) (null) 0 2 WS3  WS3X2-4 WS3X2-4 1 
3 WS6  95 (null) (null) (null) (null) 0 4 WS6  WS6X4-16 WS6X4-16  1 
4 WS16 75 (null) (null) (null) (null) 0 4 WS16 WS16X4-2 WS16X4-2 4 

每Keith和Tim的一种反应,我已经试过没有GROUP BY条款查询,这里是我的结果

enter image description here

这是朝着正确方向迈出的一步,但inventory_quantity是错的..

这是因为在我的PHP脚本我做

$newQuantity = $rs['inventory_quantity'] - ($rs['sold_quantity'] * $rs['QtySKU']); 

和脚本在我while循环输出

UPDATE ws_inventory SET Quantity = 91 WHERE SKU = 'WS16' 

其次

UPDATE ws_inventory SET Quantity = 83 WHERE SKU = 'WS16' 

问题是因为在开始查询时采取inventory_quantity。 第一个陈述的数量是-8(开始99),第二个陈述是-16(开始99)。需要知道找出一种方法来获取它,以便在这种情况下语句将与eachother一起使用,并执行99 - 8 - 16 = 75而不是仅覆盖结果。

+1

你真的想要什么输出?您当前的查询与使用“GROUP BY”的方式有关。 –

+1

否...更新您的问题并向我们显示您想要的输出。基思的建议下面完全放弃'GROUP BY'可能是正确的,除非你有不同的期望。 –

+0

你想聚合数量吗? –

回答

0

尝试删除group by子句。你没有聚合函数的分组,所以没有必要使用group by子句。

请参阅https://www.google.com.au/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=group%20by%20aggregate%20functions了解更多按功能分组的细节。

+0

我会upvoted如果你发布了一个直接链接到mysql页面,并引用了它。 – e4c5

+0

谢谢,这有帮助。进行之前的测试时,我一定把它留在那里。我已经用这个结果更新了我的问题。 – bbruman

+0

答案的确是问题标题“接收所有条目(甚至是MySQL选择语句中的”重复“)。分组依据导致结果被分组! –