我想按每个日期从多个表组中获取两个日期之间每个表的总和。我的代码只获取一个分数,而不是每个日期的所有分数的总和。
SELECT z.dates
COALESCE(a.allscore) AS cricket_score,
COALESCE(b.allscore) AS football_score
FROM (
SELECT dateby AS dates FROM cricket_table
UNION
SELECT dateby FROM football_table) AS z
LEFT JOIN (SELECT dateby AS dates, SUM(score) AS allscore FROM cricket_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-03'
GROUP BY dates) a USING (dates)
LEFT JOIN (SELECT dateby AS dates, SUM(score) AS allscore FROM football_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-03'
GROUP BY dates) b USING (dates)
GROUP BY z.dates
【完整代码与数据库结构】
$sql = "
create table cricket_table (player varchar(50), score int, dateby date);
create table football_table (player varchar(50), score int, dateby date);
insert into cricket_table values
('Sohail',32, '2020-01-02'),
('Saleem',65, '2020-01-02'),
('Hamid',76, '2020-01-02'),
('Sohail',33, '2020-05-02'),
('Saleem',44, '2020-05-02'),
('Hamid',22, '2020-05-02');
insert into football_table values
('Sohail',1, '2020-01-02'),
('Saleem',2, '2020-01-02'),
('Hamid',3, '2020-01-02'),
('Sohail',6, '2020-05-02'),
('Saleem',7, '2020-05-02'),
('Hamid',8, '2020-05-02');
";
$result = $db->prepare($sql);
$result->execute();
$query = $db->prepare("SELECT z.dates
COALESCE(a.allscore) AS cricket_score,
COALESCE(b.allscore) AS football_score
FROM (
SELECT dateby AS dates FROM cricket_table
UNION
SELECT dateby FROM football_table) AS z
LEFT JOIN (SELECT dateby AS dates, SUM(score) AS allscore FROM cricket_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-03'
GROUP BY dates) a USING (dates)
LEFT JOIN (SELECT dateby AS dates, SUM(score) AS allscore FROM football_table
WHERE dateby BETWEEN '2020-01-01' AND '2020-03-03'
GROUP BY dates) b USING (dates)
GROUP BY dates
");
(https://pastebin.com/prvsd1X8)
烙印99
ABOUTYOU