Php 如何获取最新数量的sql子查询
我需要得到每个股票持有人最近的交易金额,而不是他们的交易总额 有两张桌子是存货员 存货表Php 如何获取最新数量的sql子查询,php,mysql,sql,Php,Mysql,Sql,我需要得到每个股票持有人最近的交易金额,而不是他们的交易总额 有两张桌子是存货员 存货表 stid memberid stockistname area_c 1 4 Roger Sp Park 2 6 John Little Garden 3 77 Lily White D 4 32 Meredith Dar
stid memberid stockistname area_c
1 4 Roger Sp Park
2 6 John Little Garden
3 77 Lily White D
4 32 Meredith Dare street
交易表
trans_id memberid trans_type amount trans_date
300 4 cp 250 2015-12-01 00:00:56
301 6 cp 100 2015-12-01 01:20:56
302 6 cp 130 2015-12-03 11:03:51
303 77 cp 74 2015-12-03 13:03:51
304 32 cp 25 2015-12-04 11:00:02
305 6 cp 425 2015-12-04 17:00:02
306 4 cp 235 2015-12-05 06:00:02
我的问题是:
SELECT * FROM stockist LEFT JOIN (
SELECT * FROM transactions WHERE trans_type='cp' ORDER BY trans_id DESC LIMIT 1 )
transactions ON stockist.memberid=transactions.memberid ORDER BY stockist.stockistname ASC
结果是:
John $0
Lily $0
Meredith $0
Roger $0
我得到了所有股票持有人的名单但金额为零,
它应该显示
John $425
Lily $74
Meredith $25
Roger $235
实际上,在我的PHP代码中,我的代码看起来像这样,但速度不够快。我想快点
$x=1;
$sql = mysql_query("SELECT * FROM stockist ORDER BY stockistname ASC");
while($row=mysql_fetch_array($sql)){
$memberid=$row['memberid'];
$stockistname=$row['stockistname'];
$sql2 = mysql_query("SELECT * FROM transactions WHERE memberid='$memberid' AND trans_type='cp' ORDER BY trans_id LIMIT 1");
$row2=mysql_fetch_array($sql2);
$latest_amount=$row2['amount'];
echo "<p> $x - $stockistname $ $latest_amount </p>";
$x++;
}
感谢大家尝试一下:
select stockist.stockistname, amount from
stockist, (select memberid,amount,MAX(trans_date) from transactions where trans_type='cp' GROUP BY memberid) transactions
where
stockist.memberid=transactions.memberid
ORDER BY stockist.stockistname ASC
试试这个:
select stockist.stockistname, amount from
stockist, (select memberid,amount,MAX(trans_date) from transactions where trans_type='cp' GROUP BY memberid) transactions
where
stockist.memberid=transactions.memberid
ORDER BY stockist.stockistname ASC
你的限制导致了这个问题。。尝试使用相关查询比较最长日期,如下所示:
SELECT * FROM stockist s
LEFT OUTER JOIN transactions t
ON(t.memberid = s.memberid and t.trans_type = 'cp')
WHERE t.trans_date = (select max(f.trans_date) from transactions f
where f.memberid = t.memberid and f.trans_type = 'cp')
你的限制导致了这个问题。。尝试使用相关查询比较最长日期,如下所示:
SELECT * FROM stockist s
LEFT OUTER JOIN transactions t
ON(t.memberid = s.memberid and t.trans_type = 'cp')
WHERE t.trans_date = (select max(f.trans_date) from transactions f
where f.memberid = t.memberid and f.trans_type = 'cp')
试着按数量订购
SELECT * FROM stockist
LEFT JOIN transactions ON stockist.memberid = transactions.memberid
WHERE trans_type='cp'
GROUP BY stockistname ORDER BY amount DESC LIMIT 1
试着按数量订购
SELECT * FROM stockist
LEFT JOIN transactions ON stockist.memberid = transactions.memberid
WHERE trans_type='cp'
GROUP BY stockistname ORDER BY amount DESC LIMIT 1
你为什么在你的加入中做子查询?你为什么在你的加入中做子查询?快告诉我!此外,您还将子查询移出了连接,什么是不发生?从这个问题中得到了什么?吃我吧!此外,您还将子查询移出了连接,什么是不发生?从这个查询中返回的内容确实有效,但金额不是最新的。不过多亏了你的代码,我才能够得到我想要的答案。谢谢,它确实起了作用,但金额不是最新的。不过多亏了你的代码,我才能够得到我想要的答案。谢谢