M*****t 发帖数: 26706 | |
S********t 发帖数: 18987 | |
p**r 发帖数: 5853 | |
j*a 发帖数: 14423 | 4 直接在bbs问好了
【在 M*****t 的大作中提到】 : 交流交流。。。其实是我有些问题想问。
|
M*****t 发帖数: 26706 | 5 说说上海小胖的故事
【在 p**r 的大作中提到】 : 難道你就是我認識的上海小胖?
|
g******u 发帖数: 1005 | 6
yes, plz
【在 M*****t 的大作中提到】 : 说说上海小胖的故事
|
p**r 发帖数: 5853 | 7 小胖一個朋友,也是搞php的,高中畢業後,貌似沒念大學。
在20歲左右的年紀,大部分la的loser還在喝奶茶,泡妞的時候
小胖勤懇碼code,然後把房子買了,老婆娶了,
現在23,24,小孩都2個了。
【在 M*****t 的大作中提到】 : 说说上海小胖的故事
|
j*a 发帖数: 14423 | 8 后生可畏啊
【在 p**r 的大作中提到】 : 小胖一個朋友,也是搞php的,高中畢業後,貌似沒念大學。 : 在20歲左右的年紀,大部分la的loser還在喝奶茶,泡妞的時候 : 小胖勤懇碼code,然後把房子買了,老婆娶了, : 現在23,24,小孩都2個了。
|
M*****t 发帖数: 26706 | 9 问题来了:
有这么一个mysql的表
Date Item Quantity
1/2/12 Fish 3
1/3/12 Fish 4
1/2/12 Apple 5
1/5/12 Fish 4
如果把鱼吃了,比如吃了6条鱼,现在我要把鱼的购买交易都找出来,
然后更新库存,先买的先走,这样1/2买的3条变成0了
然后1/3买的4条变成1,1/5买的4条还是4
请问一下怎么弄?谢谢。
【在 M*****t 的大作中提到】 : 交流交流。。。其实是我有些问题想问。
|
w******k 发帖数: 917 | 10 表达不清楚
【在 M*****t 的大作中提到】 : 问题来了: : 有这么一个mysql的表 : Date Item Quantity : 1/2/12 Fish 3 : 1/3/12 Fish 4 : 1/2/12 Apple 5 : 1/5/12 Fish 4 : 如果把鱼吃了,比如吃了6条鱼,现在我要把鱼的购买交易都找出来, : 然后更新库存,先买的先走,这样1/2买的3条变成0了 : 然后1/3买的4条变成1,1/5买的4条还是4
|
|
|
c*******n 发帖数: 9098 | |
p**r 发帖数: 5853 | 12 最愚蠢的,不涉及算法的方法就是,做个loop,减到0为止
数据库部分:
sql query: select quantity from table where item='Fish' order by date.
程序部分:
datareader=result of sql query
soldAmount=6;
while(soldAmount>0 && datareader.CanReadNext)
{
//获得每天的库存
int tempQuanity=int(datareader["Quantity"]);
//累减
soldAmount-=tempQuantity;
//update table by column key
}
语法是乱写的,但是你应该可以看懂,PHP很久不搞了。
不过这是最笨的方法,如果用算法,运行速度会更快。
【在 M*****t 的大作中提到】 : 问题来了: : 有这么一个mysql的表 : Date Item Quantity : 1/2/12 Fish 3 : 1/3/12 Fish 4 : 1/2/12 Apple 5 : 1/5/12 Fish 4 : 如果把鱼吃了,比如吃了6条鱼,现在我要把鱼的购买交易都找出来, : 然后更新库存,先买的先走,这样1/2买的3条变成0了 : 然后1/3买的4条变成1,1/5买的4条还是4
|
m********c 发帖数: 13337 | 13 出门上楼右转下楼进第六个门。
【在 M*****t 的大作中提到】 : 交流交流。。。其实是我有些问题想问。
|
e*******y 发帖数: 5613 | 14 不懂php 不过感觉这就是一个算法么。。。你加一个stock的temporary变量 sort the
query by date 然后calculate the stock as accumulative sum, 象我下面列出来的
那样
假设需要更新的变量为x 在你的例子里是吃掉的6条鱼
update quantity
if stock-x <=0 then quantity= max(0,(quantity-x),(stock-x))
if stock-x >0 and quantity>=(stock-x) then quantity= (quantity-(stock-x)
if stock-x >0 and quantity< (stock-x) then quantity= quantity
delete if quantity=0
没特别仔细考虑 大概这么个意思 |
i********f 发帖数: 206 | 15
$con = mysql_connect("localhost","username","password");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT quantity FROM TABLE WHERE item='Fish' ORDER BY
date ASC");
$number = 6;
while($row = mysql_fetch_array($result)) {
if ($row['Quality'] < $number) {
# DELETE THE ROW
$number -= $row['Quality'];
continue;
} else if ($row['Quality'] === $number) {
# DELETE THE ROW
break;
} else {
$left = $row['Quality'] - $number;
# UPDATE THE ROW
break;
}
}
mysql_close($con);
?>
TABLE 最好建一个unique的column做index |
p**r 发帖数: 5853 | 16 原来everlucky也是码code的。
the
【在 e*******y 的大作中提到】 : 不懂php 不过感觉这就是一个算法么。。。你加一个stock的temporary变量 sort the : query by date 然后calculate the stock as accumulative sum, 象我下面列出来的 : 那样 : 假设需要更新的变量为x 在你的例子里是吃掉的6条鱼 : update quantity : if stock-x <=0 then quantity= max(0,(quantity-x),(stock-x)) : if stock-x >0 and quantity>=(stock-x) then quantity= (quantity-(stock-x) : if stock-x >0 and quantity< (stock-x) then quantity= quantity : delete if quantity=0 : 没特别仔细考虑 大概这么个意思
|
e*******y 发帖数: 5613 | 17 不算的 不过平时会用sql
OOP的语言基本不会 虽然大学学过一点点
【在 p**r 的大作中提到】 : 原来everlucky也是码code的。 : : the
|
p**r 发帖数: 5853 | 18 那估计是DBA
【在 e*******y 的大作中提到】 : 不算的 不过平时会用sql : OOP的语言基本不会 虽然大学学过一点点
|
e*******y 发帖数: 5613 | 19 非CS专业。。。
你是多媒体么?看你之前的帖子 我好像有这么个印象
【在 p**r 的大作中提到】 : 那估计是DBA
|
z*********n 发帖数: 94654 | 20 文科生?
【在 e*******y 的大作中提到】 : 非CS专业。。。 : 你是多媒体么?看你之前的帖子 我好像有这么个印象
|
|
|
e*******y 发帖数: 5613 | 21 何以见得?
【在 z*********n 的大作中提到】 : 文科生?
|
p**r 发帖数: 5853 | 22 恩,做影视娱乐公司的IT研发,混日子的。
【在 e*******y 的大作中提到】 : 非CS专业。。。 : 你是多媒体么?看你之前的帖子 我好像有这么个印象
|
p**r 发帖数: 5853 | 23 搞不好是金融分析方面的,
这个经常需要用到sql query。
【在 z*********n 的大作中提到】 : 文科生?
|
M*****t 发帖数: 26706 | 24 iamicewolf那个,我不想DELETE,所有的交易都要留底的。
不过我已经搞定了! 写码实在太好玩儿了。
//Code to update the inventory once updateinventory button is clicked
$shipquantity = "somenumber";
$sqlT="SELECT transactionID, SoldNumber, InStockNumber FROM Inventory
WHERE ProductID='$selected_Product' AND InstockNumber>0 AND UserID='$
selected_User ORDER BY TransactionDate ASC";
$resultT = mysql_query($sqlT);
while($r = mysql_fetch_array($resultT)){
$TID = $r['transactionID'];
$InStock = $r['InStockNumber'];
$Sold = $r['SoldNumber'];
if ($InStockNumber >= $shipquantity){
$Sold=$Sold+$shipquantity; $InStock=$InStock-$shipquantity; $
shipquantity = 0;
}
else{
$Sold=$Sold+$InStock; $shipquantity=$shipquantity-$InStock; $InStock
=0;
}
$update = "UPDATE Inventory SET SoldNumber='$Sold', InStockNumber='$
InStock' WHERE
transactionID='$TID'";
$result = mysql_query($update);
if(!$result)$errors.="update not successful!";
if ($shipquantity == 0) break;
} |