MySQL查询的解决方案

时间:2017-06-22 03:31:16

标签: php mysql

我的项目需要一个解决方案。实际上,我遇到了一个问题。让我告诉你我的问题的图片。 Senerio of my problem

如果你看到,有一些12个月的列。所以我需要运行MySQL查询或程序,它可以显示包含文本“Not Paid”的选定列。

例如。

如果我想检查一月到三月或六月到十一月等会员“未付费”,那么解决方法是什么...... ??

我知道我们可以使用“之间”条款,但我没有得到这个想法。因为我想使用两个下拉菜单,用户可以选择从哪个月到他们想要查看的月份。

请帮助我摆脱这个问题。我是PHP的新手。

1 个答案:

答案 0 :(得分:1)

如果我是你,我会将月份表示为日期,即使是字符串(例如'2017-06'),然后将月份映射到语义表示字符串(例如,'June')。因此,一种方法是将日期作为varchar存储在MySQL数据库中。

在对数据库中的数据建模方面,我将创建一个包含三列的表1)user_id; 2)due_date; 3)payment_status

.----------------------------.
| 0 | 2017-06    | paid      |
| 1 | 2017-07    | not paid  |
| 2 | 2017-08    | paid      |
| 3 | 2017-09    | paid      |
'----------------------------'

现在,您可以编写一个查询来检索具有“未付费”的1月到3月之间的成员。 (注意:这只是一种方式,有很多方法可以查询)

SELECT 
 DISTINCT(user_id) 
FROM payments_table 
WHERE due_date >= '2017-03' 
 AND due_date < '2017-06' 
 AND payment_status = 'not paid';