mysql - 接收所有条目(甚至 MySQL Select 语句中的 'duplicates'

标签 mysql

这是我的 MySQL 查询:

$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 开始)。需要知道找到一种方法来获取它,以便语句在这种情况下可以相互配合,并执行 99 - 8 - 16 = 75 而不是仅仅覆盖结果..

最佳答案

尝试删除 group by 子句。您没有 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有关分组依据功能的更多详细信息。

关于mysql - 接收所有条目(甚至 MySQL Select 语句中的 'duplicates',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40713188/

相关文章:

php - 将 MySQL 链接传递给类方法

mysql - 在表的 JOIN 之前设置 LIMIT

mysql - 分别过去四个月的 Sum(count()) ?

mysql - 这是什么时间格式? (不是 UNIX,不是 UTC,什么都没有)

mysql - 为什么这个 SQL 语句不起作用?

php - 扩展 PiP 算法的 MySQL 实现?

mysql - 合并 SQL 条目

php - 图片不显示后端或前端-magento 1.9.3.1 v

c# - 如何从数据库表中提取浮点值并将其分配给 asp.net C# 中的 double 类型变量?

mysql - 为什么我不断收到此错误 : ERROR 1064 (42000)?