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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL SELECT,JOIN TABLES和GROUP / COUNT COMMA SEPARATED VALUES相关的知识,希望对你有一定的参考价值。

我有以下两个表:

**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是用逗号分隔的值,我不知道如何分割它们并对它们进行分组/计数。

答案

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

**Table: appointments_services**

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

从这里开始,问题是微不足道的。

以上是关于MySQL SELECT,JOIN TABLES和GROUP / COUNT COMMA SEPARATED VALUES的主要内容,如果未能解决你的问题,请参考以下文章

Mysql Count with Inner join of two tables, Average Join

MySQL:从'select tables_names ...'返回所有表

Mysql select on indexed column slowdown on large tables

mysql explain中的 “Select tables optimized away”

MySQL 使用 select 和 join 插入 post_meta - 我做错了啥?

MySQL 嵌入式 SELECT 与 JOIN