mysql使用JOIN从2个表中获取拍卖数据和出价
我有表mysql使用JOIN从2个表中获取拍卖数据和出价,mysql,sql,Mysql,Sql,我有表a拍卖和表b出价: 表a(拍卖): 表b(投标文件): 我想要得到的是表b中的出价金额、总出价、每次拍卖的最后出价日期,以及表a中的id和状态,所有按状态排序的物品: 大概是这样的: id status bid_sum bid_count last_bid_date 4 1 0.6 3 2018-01-28 1 1 0.3 3 2018-01-29 3 0 0
a
拍卖和表b
出价:
表a
(拍卖):
表b
(投标文件):
我想要得到的是表b
中的出价金额、总出价、每次拍卖的最后出价日期,以及表a
中的id和状态,所有按状态排序的物品:
大概是这样的:
id status bid_sum bid_count last_bid_date
4 1 0.6 3 2018-01-28
1 1 0.3 3 2018-01-29
3 0 0 0 0000-00-00
2 0 0 0 0000-00-00
到目前为止,我有一个疑问:
SELECT a.id, a.status, SUM( b.amount ) as bids_sum, COUNT( b.id ) as bids_count, MAX( b.dt ) as last_bid_date
FROM a, b
GROUP BY a.id
ORDER BY a.status DESC, a.id DESC
问题是,它只返回至少有1次出价的拍卖
id status bid_sum bid_count last_bid_date
4 1 0.6 3 2018-01-28
1 1 0.3 3 2018-01-29
我需要所有的拍卖。你能帮忙吗?谢谢大家! 您要做的是
左连接
:
SELECT a.id,
a.status,
SUM(b.amount) AS bids_sum,
COUNT(b.id) AS bids_count,
MAX(b.dt) AS last_bid_date
FROM a
LEFT JOIN b ON a.id = b.auction_id
GROUP BY a.id
ORDER BY a.status DESC,
a.id DESC
使用适当的
连接。它已经存在20多年了。
id status bid_sum bid_count last_bid_date
4 1 0.6 3 2018-01-28
1 1 0.3 3 2018-01-29
SELECT a.id,
a.status,
SUM(b.amount) AS bids_sum,
COUNT(b.id) AS bids_count,
MAX(b.dt) AS last_bid_date
FROM a
LEFT JOIN b ON a.id = b.auction_id
GROUP BY a.id
ORDER BY a.status DESC,
a.id DESC
SELECT
a.id,
a.status,
COALESCE(SUM(b.amount), 0) as bids_sum,
COUNT(b.id) as bids_count,
COALESCE(MAX(b.dt), '0000-00-00') as last_bid_date
FROM a left outer join b
on a.id = b.auction_id
GROUP BY a.id
ORDER BY a.status DESC, a.id DESC