2014-09-22 68 views
0

我有一個MySQL表集團按日期(PHP,MySQL的)

daten name  sub rate 
******************************* 
09.22 Jonh  some5  one 
09.22 Jonh  some2  two 
09.22 Jonh  some3  two 

需要HTML得到:

Jonh: 
date some5 some2 some3 
*********************** 
09.22 one two two 

我做的:

​​

但這樣的代碼,當按日期分組時,只顯示第一個值。沒有團隊都是非常錯誤的。

請告訴我什麼是錯的,在哪裏挖。

謝謝

+0

Group by by aggregate函數會給你每個組的不確定行 – 2014-09-22 07:41:56

+0

@MhalidJunaid你能解釋一下詳細情況嗎?謝謝 – 2014-09-22 07:48:16

回答

0

你需要得到單列所有數據,以便你有你查詢下使用,如果條件。 Mysql if函數返回一個基於條件的值。 IF的了Syntex是

if (expr, if_true_expr, if_false_expr) 

如果expr取值TRUE即expr是不是NULL expr是不爲0,IF函數返回if_true_expr,否則返回if_false_expr。 IF函數返回一個數字或字符串,具體取決於它如何使用。

SELECT 
    `name` 
    , MAX(IF(`rate` = 'one', `rate`, NULL)) some5 
    , MAX(IF(`rate` = 'two', `rate`, NULL)) some2 
    , MAX(IF(`rate` = 'two', `rate`, NULL)) some3 
FROM 
    database1 
GROUP BY 
    name; 
+0

請在答案中添加一些細節並設置代碼的格式。這個答案不僅適用於OP,答案應該有助於任何讀這篇文章的人。例如, – Pred 2014-09-22 08:54:19

+0

表。在現實中:我有大約一百個「sub」,而且「rate」用戶輸入數據本身,所以這可能是任何事情。 謝謝 – Irina 2014-09-22 09:49:29

0

使用此查詢:SELECT daten,GROUP_CONCAT(sub)as sub FROM table WHERE name ='$ name'group by daten。你會得到預期的輸出。

+0

請解釋此查詢如何幫助解決原始問題。爲什麼OP應該使用這個查詢?另請格式化您的代碼塊以提高可讀性。答案不只是解決OP的問題,而是幫助讀者進一步瞭解問題和解決方案。 – Pred 2014-09-22 10:26:53