2017-01-11 4 views
1

У меня есть 2 стола,mysql join 2 таблицы, вторая таблица нуждается в SUM()

Вначале содержатся статьи, а вторые - количества. две таблицы связаны с столбцом «кодекс». Вторая таблица может иметь несколько записей для одного и того же элемента, но также может иметь их.

Что мне нужно - это запрос, в котором перечисляется вся первая таблица, и добавляется дополнительный столбец, содержащий сумму всех величин всех записей во второй таблице.

Я сделал это с левым соединением в таблице kodex и прекрасно работал, но только до тех пор, пока я не добавляю sum() в оператор select. как только я это сделаю, он перечисляет только строки, которые соответствуют во второй таблице.

Query, который отображает все строки:

SELECT b.* FROM `bestehend` as b left join eingelesen as e on e.kodex=b.kodex 

запрос, который отображает только строки с соответствующих записей во второй таблице:

SELECT b.*, sum(e.menge) as gesmenge FROM `bestehend` as b left join eingelesen as e on e.kodex=b.kodex 

, что я должен был бы это поведение первого запроса, с дополнительный столбец gesmenge из второго запроса.

спасибо!

+0

выборки данных и ожидаемых результатов, пожалуйста, – e4c5

+0

Попробуйте добавить группу по 'b.article_id' в второй запрос, в конце, и я думаю, что должен это сделать – KuKeC

+0

@KuKeC СПАСИБО! не могли бы вы опубликовать его как ответ, чтобы я мог его принять? у вас есть объяснение относительно того, что происходит и почему это решает? – sharkyenergy

ответ

1

Обновление ваш запрос

SELECT b.*, sum(e.menge) as gesmenge FROM `bestehend` as b left join eingelesen as e on e.kodex=b.kodex 

с добавлением group by b.article_id. Группа нужна, поэтому запрос знает, как суммировать все количества всех записей во второй таблице.

Окончательный запрос должен выглядеть

SELECT b.*, sum(e.menge) as gesmenge FROM `bestehend` as b left join eingelesen as e on e.kodex=b.kodex group by b.article_id 
Смежные вопросы