2014-11-08 34 views
0

我不知道如何查詢我的數據庫,以便它返回從給定查詢中動態生成列的結果集。下面是我想查詢自定義結果集

+---------+------------+-------+ 
| 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個值之間由特定用戶輸入的所有單位的表。只要這個查詢將是:

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中以編程方式完成?

如果無法建立關於如何設置數據庫的建議,我們將不勝感激。注意:我想避免使用特定日期作爲列,因爲表中每天都會添加大量數據。

+1

您正在尋找稱爲'pivoting' – Rahul 2014-11-08 10:04:14

回答

0

感謝Rahul讓我走上正軌!我結束了實現下面的查詢,給了我想要的東西。如果其他人有更好的答案,請隨時回答。

SELECT unit_number AS unit, 
    SUM(IF(date=?,1,0)) AS day4, 
    SUM(IF(date=?,1,0)) AS day3, 
    SUM(IF(date=?,1,0)) AS day2, 
    SUM(IF(date=?,1,0)) AS day1, 
    SUM(IF(date=?,1,0)) AS day0 
FROM `table_name` 
WHERE user_id = 1 AND (unit BETWEEN 1 AND 5) 
GROUP BY unit