【发布时间】:2014-11-10 12:20:40
【问题描述】:
我不知道如何查询我的数据库以便它返回一个结果集,该结果集具有从给定查询中动态生成的列。下面是我要查询的表
+---------+------------+-------+
| user_id | date | unit |
+---------+------------+-------+
| 1 | 2014-11-08 | 2 |
| 1 | 2014-11-08 | 5 |
| 1 | 2014-11-07 | 1 |
| 2 | 2014-11-07 | 2 |
| 1 | 2014-11-08 | 1 |
| 1 | 2014-11-07 | 2 |
+---------+----------=-+-------+
当日期介于 2 个日期之间且单位编号介于 2 个值之间时,我希望能够选择特定用户输入的所有单位。为此,查询将是:
SELECT `unit`
FROM `unit_table`
WHERE user_id = 1
AND (`date` BETWEEN '2014-11-05' AND '2014-11-08')
AND (`unit` BETWEEN 1 AND 5)
但我希望结果集采用以下格式,其中 TRUE 和 FALSE 分别为 1 和 0
+------+------------+------------+------------+------------+
| unit | 2014-11-05 | 2014-11-06 | 2014-11-07 | 2014-11-08 |
+------+------------+------------+------------+------------+
| 1 | FALSE | FALSE | TRUE | TRUE |
| 2 | FALSE | FALSE | TRUE | TRUE |
| 3 | FALSE | FALSE | FALSE | FALSE |
| 4 | FALSE | FALSE | FALSE | FALSE |
| 5 | FALSE | FALSE | FALSE | TRUE |
+------+------------+------------+------------+------------+
这甚至可能吗,还是需要在结果集中在 php 中以编程方式完成?
如果无法提供有关如何设置数据库以允许这样做的任何建议,我们将不胜感激。注意:我想避免使用特定日期作为列,因为该表每天都会添加大量数据。
【问题讨论】:
-
你正在寻找一个叫做
pivoting的东西