У меня есть следующие две таблицы:
**Table: appointments**
--------------------------
id | user_id | date
--------------------------
1 | 18 | 23/02/2018
2 | 24 | 24/02/2018
3 | 18 | 24/02/2018
--------------------------
**Table: appointments_services**
--------------------------------
id | appointment_id | service_id
--------------------------------
1 | 1 | 23,26
2 | 2 | 12,23
3 | 3 | 23,45,12
--------------------------------
Я хотел бы получить следующие отчеты:
1) На основе периода даты я войду, чтобы сгруппировать службы и показать мне общее количество/счет. 2) В тот же период времени, чтобы показать мне, сколько общих /user_id
сервисов было выполнено user_id
Если эти два отчета должны быть в другом SQL, я не против.
Это то, что я сделал до сих пор:
SELECT * FROM appointments_services s
JOIN appointments a ON s.appointment_id = a.id
WHERE STR_TO_DATE(a.date, '%d/%m/%Y') BETWEEN STR_TO_DATE('01/03/2018', '%d/%m/%Y') AND STR_TO_DATE('05/03/2018', '%d/%m/%Y')
Я застрял сейчас, потому что service_id
находится в значениях, разделенных запятыми, и я не знаю, как их разделить и группировать/подсчитывать.
Нормализованная среда может выглядеть следующим образом:
**Table: appointments_services**
appointment_id | service_id
---------------+----------------
1 | 23
1 | 26
2 | 12
2 | 23
3 | 23
3 | 45
3 | 12
Отсюда проблема тривиальна.