Объединить две таблицы уникальный столбец - PullRequest
0 голосов
/ 30 октября 2018

У меня есть две таблицы, как показано ниже:

mysql> select*from receipt;                                                                                
+----+------------+-------+---------------------+
| id | receipt_id | money | created_at          |
+----+------------+-------+---------------------+
|  1 | receipt_3  |   100 | 2018-10-30 00:00:00 |
|  2 | receipt_4  |   200 | 2018-10-29 00:00:00 |
|  3 | receipt_5  |   300 | 2018-10-31 00:00:00 |
+----+------------+-------+---------------------+
3 rows in set (0.00 sec)

mysql> select*from material;
+----+------------+---------------------+
| id | receipt_id | created_at          |
+----+------------+---------------------+
|  1 | receipt_3  | 2018-10-30 00:00:00 |
|  2 | receipt_3  | 2018-10-30 00:00:00 |
|  3 | receipt_5  | 2018-10-31 00:00:00 |
+----+------------+---------------------+
3 rows in set (0.00 sec)

У меня есть результат, используйте это: "выберите отличную сумму (деньги), material. created_at из receipt внутреннее объединение material на receipt. receipt_id = material. receipt_id сгруппировать по material. created_at; "

+------------+---------------------+
| sum(money) | created_at          |
+------------+---------------------+
|        200 | 2018-10-30 00:00:00 |
|        300 | 2018-10-31 00:00:00 |
+------------+---------------------+
2 rows in set (0.00 sec)

но я хочу получить это, игнорируя ту же запись:

+------------+---------------------+
| sum(money) | created_at          |
+------------+---------------------+
|        100 | 2018-10-30 00:00:00 |
|        300 | 2018-10-31 00:00:00 |
+------------+---------------------+
2 rows in set (0.00 sec)

Долго думал, но ответа нет, помогите, спасибо большое.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Вы можете попытаться использовать DISTINCT для material в подзапросе, игнорируя ту же запись, тогда JOIN

SELECT sum(r.money),t1.created_at
FROM (
    select DISTINCT receipt_id,created_at   
    from material
)t1 JOIN receipt r on t1.receipt_id = r.receipt_id  
GROUP BY t1.created_at 
0 голосов
/ 30 октября 2018

Просто используйте sum(distinct money):

select sum(distinct money) as sum_money,
       m.created_at 
  from receipt r join material m 
    on r.receipt_id=m.receipt_id 
 group by m.created_at;

+------------+---------------------+
| sum_money  | created_at          |
+------------+---------------------+
|        100 | 2018-10-30 00:00:00 |
|        300 | 2018-10-31 00:00:00 |
+------------+---------------------+

Демонстрация DB-Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...