Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql使用JOIN从2个表中获取拍卖数据和出价_Mysql_Sql - Fatal编程技术网

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