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

я:

$str = "SELECT * FROM table WHERE name= '$name' group by daten"; 
$rts = mysql_query($str); 

echo "<h1>".$name."</h1>"; 
echo "<table border=\"1\"><th>date</th> "; 

    while($row = mysql_fetch_array($rs)) { 

echo "<th>".$row['sub'] . "</th></tr>"; 
echo "<tr><td>".$row['daten'] ."</td><td>".$row['rate']."</td></tr>"; 
    } 
echo "</table>"; 

Но такой код , когда группа по дате, отображает только первое значение. Без группы все совершенно неправильно.

Скажите, пожалуйста, что не так и где копать.

Спасибо

+0

Группа в отсутствие функции агрегата даст вам неопределенный ряд для каждой группы –

+0

@MKhalidJunaid вы можете объяснить, как подробно? Thanks –

ответ

0

вам нужно, чтобы получить все данные в одной строке, так что вы должны использовать, если условие, при запросе. Mysql, если функция возвращает значение, основанное на условии. Syntex ИФ является

if (expr, if_true_expr, if_false_expr) 

Если выражение имеет значение TRUE, то есть выражение не равно нулю, и выражение не равно 0, то функция ЕСЛИ возвращает 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

+0

Таблица, например. На самом деле: у меня около сотни «суб» и «скорость», которые пользователь вводит самим данным, так что это может быть что угодно. Спасибо – Irina

0

использовать этот запрос: SELECT, Daten, GROUP_CONCAT (суб) замену из таблицы, где имя = '$ имя' группы по DATEN. вы получите ожидаемый результат.

+0

Пожалуйста, объясните, как этот запрос помогает решить исходную проблему. Зачем OP использовать этот запрос? Также, пожалуйста, отформатируйте свой блок кода, чтобы облегчить читабельность. Ответ заключается не только в решении проблемы OP, но и в том, чтобы помочь читателям понять проблему и ее решение. – Pred

Смежные вопросы