我使用MySQL和PHP。我有一个包含列ID和数量的表。我想检索是最后的,因为它在总和达到40号,总结量行的ID。更加具体。我在数据库中有3行。一个与数量10,一个有数量30和一个与数量20.所以,如果我总结的数量有结果40,我会总结前两个巫的意思是:10 + 30 = 40。这样的话,最后的ID是用来概括40号是2。我只是想知道,是用来完成40和最后一排的ID。

如果问我会透露进一步的细节。谢谢!


让我这样说: 我真的有6种产品在我的手。第一个来到我在10日期占有,在接下来的3传来的11的日期和最后2来到12

现在,我想卖3个产品从我的股票。而想要出售他们的订单,他们就来了。因此,对于想要3个产品我会卖掉他,来了10个产品从出场11

的那些产品的客户

对于想要2个产品下一个顾客,我就卖给他一个产品从剩下的从3种产品的最后一个订单的11日,而另一个来自那些12。

现在的问题是我怎么会知道哪个价位有每个产品我卖?我想,如果我可以找出哪些行总结了每个请求的数量,我想知道在哪里我想提供一个订单,每次启动的总和。所以首先我想看看这行总结了3种款产品,并保持条目ID。对于下一个订单,我将开始从该ID的数量和总结,直到它总结了2个产品等第二顺序。我认为,这样一来,我可以跟踪输入的价格,每个产品具有。所以,我不会卖的产品从12日起,由使用第一价格的价格。

我希望你能理解。我只需要知道什么样的价格有我的任何产品,所以我想知道,第一批产品将有一个价格,但随着产品价格的提高,我必须提高我的价格太...这样就必须对销售的最后产品更高的价格。我只能做到这一点,如果我跟踪这个...

非常感谢你。


没人?或者,更简单:MySQL的应该选择所需的行的SUM(quantity)要高或与40例相同。然后让我的最后一行参加了和进程的ID。

有帮助吗?

解决方案

我不明白你的问题太清楚了。你可以尝试更正确地重新措辞呢?从我的理解,这里是你的数据库的结构:

ProductID    ArrivalDate
   1          10
   2          11
   3          11
   4          11
   5          12
   6          12

现在你问,“怎么会知道我的价格有每个产品我卖”?这八九不离十让我困惑,因为在数据库中的每个值没有价格属性。应该不是你的数据库是这样的:

ProductID    ArrivalDate    Price
   1          10              100
   2          11              200
   3          11              300
   4          11              300
   5          12              400
   6          12              400

就个人而言,我认为你的想法,找出价格出售是有缺陷的。它会更有意义一些更多的字段添加到您的数据库:

ProductID    ArrivalDate    Price     InStock   DateSold
   1          10              100       Yes        17
   2          11              200       Yes        17
   3          11              300       Yes        18
   4          11              300       Yes        18
   5          12              400       no        
   6          12              400       no        

在改变你的数据库,你可以轻松地跟踪,当产品到达的,销售的日期,它的价格,也许数量(我不知道如果它的实际场与否)。

此外,还可以简化,让您的生活更轻松通过分离SQL查询,甚至加入一些代码做一些工作适合你。

其他提示

有与正在运行的总第三列。然后,你可以简单地返回的最后一行所述运行总<=您的目标值。

所以,你的表应该是这样的:

ID    Quantity    RunningTotal
1           10              10
2           30              40
3           20              60

请注意:如果您在表中删除一行,记得要更新所有后续行RunningTotal -= DeletedRow.Quantity

依托表ID的可能是这方面的一个坏主意,但如果这是它是如何真正做,你可以尝试这样的事情(未测试):

SELECT yourTableA.id
  FROM yourTable AS yourTableA
  JOIN yourTable AS yourTableB
 WHERE ( yourTableA.value + yourTableB.value ) = 40
   AND yourTableA.id != yourTableB.id
 ORDER BY yourTableA.id

这类型的解决方案,如果你的期待,你只需要两行有史以来等于目标总和才有效。由于这是最有可能不是这样的,你最好的选择可能是尝试并获得所有的行,并为此programaticly返回的数据。

张贴由LC运行总计解决方案也是一个好的选择,虽然我通常尽量避免存储计算的数据,除非我绝对必须。


根据这个请求将更新的信息,我有一个备用的答案。

这听起来并不那么像您所关心的库存。你更关心,在产品进来了。

SELECT *
  FROM product
 ORDER BY product.receivedData

过程中的每个因为他们进来,记录,存储价格为记录,并坚持下去,只要你,直到你达到你需要的项目数需要。您应该结束了与项目清单,库存处于该级别的号码,并在该级别的价格。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top