Оператор MySQL для объединения двух таблиц и суммирования одинаковых элементов

У меня есть 2 таблицы, клиент и транзакция.

Customer:
--------------------------------------------
ID | Name            | Tel
--------------------------------------------
1  | Peter           | 123 4567
2  | John            | 456 1234
3  | Alice           | 789 4561
4  | Amy             | 741 8525

Transaction:
--------------------------------------------
CustID | Books | Pens  | Ruler
--------------------------------------------
1    |   2   |  0    |   1
2    |   1   |  0    |   0
1    |   0   |  3    |   0
1    |   0   |  0    |   1
2    |   1   |  1    |   1
3    |   0   |  2    |   2

Мне нужно следующее

Results:
-------------------------------------------------------------------
ID | Name          | Tel            | Books | Pens  | Ruler
-------------------------------------------------------------------
1  | Peter         | 123 4567       |   2   |   3   |   2
2  | John          | 456 1234       |   2   |   1   |   1
3  | Alice         | 789 4561       |   0   |   2   |   2
4  | Amy           | 741 8525       |   0   |   0   |   0

По сути, это сумма книг, ручек и линейки одного и того же покупателя.

Я пробовал:

                        $sql = "select
`customer`.id,
`custmaster`.name,
`custmaster`.tel,
`transaction`.id,
`transaction`.books,
`transaction`.pens,
`transaction`.ruler,
from `customer`
left join `transaction`
on `customer`.id=`transaction`.custid
ORDER BY `customer`.id ASC";

Но не отображать ни одного. 🙁 Я понимаю, что мне нужна была функция sum (). Кто-нибудь может помочь?

1

Решение

использование SUM а также GROUP BY,

SELECT c.id, c.name, c.tel, SUM(t.books) as books, SUM(t.pens) AS pens, SUM(t.ruler) AS ruler
FROM customer AS c
LEFT JOIN transactions AS t ON c.id = t.custid
GROUP BY c.id
ORDER BY c.id
0

Другие решения

Попробуй так

select
`customer`.id,
`custmaster`.name,
`custmaster`.tel,
`transaction`.id,
sum(`transaction`.books) as books,
sum(`transaction`.pens) as pens,
sum(`transaction`.ruler) as ruler,
from `customer`
left join `transaction`
on `customer`.id=`transaction`.custid
Group by `customer`.id,`customer`.Name
ORDER BY `customer`.id ASC";
0

По вопросам рекламы [email protected]