我是数据库新手。我知道一些关系,如:左联接,右联接等

但是我不知道我到底需要什么才能获得期望的输出,所以这是我的两个表:

交易表

transaction_id | date       | amount | user_id
---------------+------------+--------+----------
      1        | 2018-08-18 |   100  | 1
      2        | 2018-08-18 |   100  | 1
      3        | 2018-08-19 |   100  | 2


用户表

user_id | name  | email           | password
--------+-------+-----------------+-----------
   1    | alice | [email protected] | xxx
   2    | smith | [email protected] | xxx


因此,事务表存储有关用户执行的事务的信息。

我想这样输出:

date       | SUM(amount) | user_id
-----------+-------------+---------
2018-08-18 |     200     | 1
2018-08-18 |       0     | 2
2018-08-19 |       0     | 1
2018-08-19 |     100     | 2


这是我尝试过的查询:

select
    transaction.date,
    sum(transaction.amount),
    user.user_id
from
    transaction
left join
    user on user.user_id = transaction.user_id
group by
    date, user.user_id


提前致谢

最佳答案

SELECT date,
(
  SELECT COALESCE(SUM(transaction.amount), 0)
  FROM transaction
  WHERE
    transaction.user_id = user_ids.user_id
  AND
    OuterTable.date = transaction.date
) as amount,
user_ids.user_id
FROM transaction OuterTable,
     (SELECT user_id FROM user) user_ids
GROUP By date, user_ids.user_id


您可以在此处检查它:http://sqlfiddle.com/#!9/29ee67/9

关于mysql - 加入两个表的MySQL,但我不知道什么类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51912575/

10-16 04:10