【问题标题】:Inner Join, Select SUM and Where内连接,选择 SUM 和 Where
【发布时间】:2017-08-09 19:45:58
【问题描述】:

嗨!!我需要搜索所有 pedidos.cantidad 的总和大于等于 $sale 的 stock.id

我已经写了这个,但似乎它不起作用:

SELECT *
     , SUM(pedidos.cantidad) as total 
  FROM stock 
 INNER 
  JOIN pedidos 
    ON stock.producto = pedidos.producto 
 WHERE pedidos.producto = '$sale' 
   AND total >= stock.cantidad 
 ORDER 
    BY stock.id ASC 
 LIMIT 1

我的桌子: 库存

ID |产品 |候选人

童鞋

ID |产品 |洛特 |候选人

stock.producto 需要 = to pedidos.producto AND stock.id = pedidos.lote 所以我需要这个: SELECT stock.id WHERE (stock.cantidad -SUM(pedidos.cantidad)) >= $sale AND stock .producto = pedidos.producto AND stock.id = pedidos.lote

确切地说,当我注册新销售时,我需要找到 stock.id where (stock.cantidad - SUM(pedidos.cantidad)) IS >= $new_sale 将 stock.id 放入新输入在 pedidos.lote 上

由于我说西班牙语,我很难解释我需要什么,请为此道歉

【问题讨论】:

  • 请编辑您的问题并查看hwo do I ask mysql questions
  • 您说的是stock.id = pedidos.lote,但表中没有包括lote。什么是lote,当您已经在producto 上链接时,lote 如何链接pedidos 和stock?
  • stock.id 和 pedidos.lote 完全相同,这就是我需要将这些表关联起来以推断是否有可用库存。
  • @GuillermoEsquivel 我仍然对您的表结构感到非常困惑。SQLFiddle 上的一些示例数据会非常有帮助,但是我已经更新了我的答案。

标签: php mysql join sum


【解决方案1】:

不知道你的表和数据结构..试试这个:

SELECT Stock.ID
FROM   Stock
WHERE  Stock.Producto IN ( 
    SELECT  producto
    FROM    pedidos
    GROUP BY producto
    HAVING SUM(pedidos.cantidad) >= 100 // Your sale value
)

这是做什么的: 获取所有组合在一起时总和 > $sale 的 Producto 记录,然后查找找到 Producto 的所有 Stock.ID。

编辑

SELECT Stock.ID
FROM   Stock
WHERE  Stock.Producto IN ( 
    SELECT  Stock.ID, SUM(Pedidos.Cantidad)
    FROM    Pedidos
    INNER JOIN Stock ON Stock.ID = Pedidos.Lote
                     AND Stock.Producto = Pedidos.Producto
    GROUP BY Stock.ID, Pedidos.Producto
    HAVING  SUM(Pedidos.Cantidad) > 1000 --Sale Amount
)

【讨论】:

  • 嗨!我忘记了什么:
  • @GuillermoEsquivel 还有……别让我挂了 :)。你忘记了什么?
  • 对不起!! :忘记这一点:stock.producto 需要 = to pedidos.producto AND stock.id = pedidos.lote 所以我需要这个:SELECT stock.id WHERE SUM(pedidos.cantidad) >= $sale AND stock.producto = pedidos。 producto AND stock.id = pedidos.lote 由于我会说西班牙语,我很难解释我需要什么,请为此道歉
  • 没错,当我注册新销售时,我需要找到 stock.id where stock.cantidad IS >= $new_sale 将该 stock.id 放入 pedidos.lote 的新输入中
  • 请尝试通过编辑来澄清您的问题。在那里你有更多的格式化可能性。
猜你喜欢
  • 2013-09-15
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2012-07-17
  • 2019-08-18
相关资源
最近更新 更多