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