#mysql #sql
#mysql #sql
Вопрос:
TABLE_A имеет поле (идентификатор, имя)
--------------------------------------
id | name
--------------------------------------
1 | X
2 | Y
3 | Z
--------------------------------------
TABLE_B имеет поле (id, table_a_id, amount)
=====================================
id | table_a_id | amount
=====================================
1 | 1 | 10
2 | 1 | 5
3 | 2 | 5
4 | 1 | 5
5 | 3 | 20
6 | 1 | 10
=======================================
Я хочу отобразить результат так. Пожалуйста, помогите со структурой запросов для MySQL.Спасибо.
=====================================
name | amount
=====================================
X | 30
Z | 20
Y | 5
--------------------------------------------------------------
Ответ №1:
Это то, что вам нужно:
select max(ta.name) name, coalesce(sum(tb.amount), 0) amount
from Table_A ta
left join Table_B tb
on ta.id = tb.table_a_id
group by ta.id
Это LEFT JOIN
гарантирует, что если у вас есть W в таблице A без строк в таблице B, W будет отображаться.