MySQL SELECT, объединенные таблицы и группы / счетчики COMMA разделены значения

0

У меня есть следующие две таблицы:

**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 находится в значениях, разделенных запятыми, и я не знаю, как их разделить и группировать/подсчитывать.

  • 1
    Нормализуйте свою схему.
  • 0
    Это то, чем является текущая база данных, даже если я изменю ее с этого момента, нам все еще нужны отчеты о том, как это было раньше, поэтому я ищу лучшее решение для моей проблемы
Теги:
join
count
group-by

1 ответ

0

Нормализованная среда может выглядеть следующим образом:

**Table: appointments_services**

appointment_id | service_id
---------------+----------------
             1 |         23
             1 |         26
             2 |         12
             2 |         23
             3 |         23
             3 |         45
             3 |         12

Отсюда проблема тривиальна.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню