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”