#php #mysql #laravel
#php #mysql #laravel
Вопрос:
У меня есть несколько таблиц table Analytics :
room_id | diag_in | indicator_in | etc..
22 | 0 | 1
23 | 1 | 0
23 | 1 | 1
22 | 0 | 1
И я хочу вывести :
room_id | total
22 | 2
23 | 3
SELECT room_id,SUM(total) AS total FROM(
SELECT room_id, COUNT(indicator_in) total
FROM Analytic
WHERE indicator_in='1'
GROUP BY room_id
UNION
SELECT room_id, COUNT(`diag_in`) total
FROM Analytic
WHERE diag_in='1'
GROUP BY room_id
) abc
GROUP BY room_id
Это работает… но как упростить код, если у меня в таблице 23 столбца, и я буду реализовывать в Laravel, это такой длинный код …. , Как упростить код?
Ответ №1:
Вы можете просто использовать group by и sum для подсчета обоих столбцов вместе.
В SQL:
SELECT room_id, (SUM(indicator_in) SUM(diag_in)) as total
FROM Analytic
GROUP BY room_id
Использование Laravel Query Builder:
DB::table('Analytic')
->groupBy('room_id')
->select(
'room_id',
DB::raw('(SUM(indicator_in) SUM(diag_in)) as total')
)
->get();
Комментарии:
1. Черт, ты оказался быстрее меня. :/ Ты можешь использовать эту скрипку с db
2. хахаха, о чем я думал, так это о том, чтобы сделать такой сложный query…so спасибо