MySQL SELECT,JOIN TABLES和GROUP / COUNT COMMA SEPARATED VALUES

时间:2018-03-05 10:14:32

标签: mysql join group-by count

我有以下两个表:

**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已提供的服务总数/计数

如果以上两个报告需要在不同的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 :(得分:0)

规范化环境可能如下所示:

**Table: appointments_services**

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

从这里开始,这个问题很简单。