2014-09-22 87 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