Как сделать отчет из этой таблицы ниже? (laravel mysql) - PullRequest
0 голосов
/ 09 марта 2020

У меня есть 2 такие таблицы: есть таблица запросов и таблица процессов, таблица запросов имеет перечисление типа (TOP, LOW). таблица процессов - это процесс запроса (от состояния 1 до 3).

Изображение таблицы:

table image

Я хочу составьте отчет, подобный приведенному ниже, как я могу достичь этого в laravel или sql запросах?

Таблица отчета:

table report

на изображении выше, тип TOP имеет 2 данных (id 1 и 2 из таблицы запросов). в таблице процессов последний статус request_id = 1 равен 3, а request_id = 2 равен 2.

, поэтому в таблице отчетов состояние данных TOP = 2 считается равным 1 (request_id = 2) и TOP статус данных = 3 считается 1 (request_id = 1). если request_id = 2 обновляется, чтобы быть в состоянии процесса 3 в табличном процессе, то при подсчете отчета будет показано, что состояние TOP данных = 3 считается равным 2 (request_id = 1 & 2).

Я надеюсь, что вы все понять, в чем моя проблема, я пытаюсь объяснить эту проблему как можно подробнее. спасибо

1 Ответ

0 голосов
/ 09 марта 2020

Этот запрос будет работать, но может быть дополнительно оптимизирован, так как внутренний запрос в selectRaw можно заменить на объединения.

Request::select('type')
->selectRaw('(select count(id) from process where request_id IN (select id from requests r where type=requests.type) and status=1') as status1)

->selectRaw('(select count(id) from process where request_id IN (select id from requests r where type=requests.type) and status=2') as status2)

->selectRaw('(select count(id) from process where request_id IN (select id from requests r where type=requests.type) and status=3') as status3)
->groupBy('type')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...