Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: SQL запрос
Форумы портала PHP.SU » » Вопросы новичков » SQL запрос

Страниц (1): [1]
 

1. alezander - 30 Января, 2017 - 01:03:20 - перейти к сообщению
Спойлер (Отобразить)


таблица 1 (kassa)

id coming idofoffice
1 200.00 1
2 819.00 1
3 481.60 1
4 100.00 2
9 100.00 2

Таблица 2 (office)

idofoffice nameofoffice
1 ЦО
2 Х1

В итоге я получаю вывод только с одним из как сделать так чтобы были все офисы по очереди ?

office comingsum
ЦО 1701.60
2. T1grOK - 30 Января, 2017 - 09:52:26 - перейти к сообщению
GROUP BY + ORDER BY
3. Мелкий - 30 Января, 2017 - 17:57:14 - перейти к сообщению
По-хорошему, на свой запрос вы должны были получить сообщение об ошибке. Вероятно, речь о старом или неправильно настроенном mysql (дефолтный конфиг - это неправильный), где такое допускалось.

Проще говоря - вы не указали, по какому признаку группировать строки. А при наличии функции агрегации и отсутствия группировки подразумевается группировка в одну строку.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT office.nameofoffice AS office, inc FROM office LEFT JOIN (
  2. SELECT idoffice, SUM(kassa.coming) AS inc FROM kassa GROUP BY idoffice
  3. ) income USING(idofoffice)

left join - если нужны все office. ifnull или coalesce добавить по вкусу.
inner join - если только те, у которых есть хоть что-то в kassa
4. alezander - 30 Января, 2017 - 18:24:25 - перейти к сообщению
спасибо за ответы.

 

Powered by ExBB FM 1.0 RC1