Отобразить результаты MySQL по дате

У меня есть эта таблица mysql:

+--------------------+---------+-------+ | date | query | count | |--------------------+---------+-------| |2012-11-18 09:52:00 | Michael | 1 | |2012-11-18 10:47:10 | Tom | 2 | |2012-11-17 15:02:12 | John | 1 | |2012-11-17 22:52:10 | Erik | 3 | |2012-11-16 09:42:01 | Larry | 1 | |2012-11-16 07:41:33 | Kate | 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

и так далее. Я могу просто взять результаты и заказать их по дате в одной строке с помощью этого кода:

 $queries = mysql_query("SELECT * FROM my_tables ORDER BY date DESC LIMIT 20"); while($row = mysql_fetch_array($queries)){ echo "Name ".$row['query'].""; } 

Но как отображать элементы из таблицы, упорядоченной по определенной дате, например:

 In 2012-11-18: Michael Tom In 2012-11-17: John Erik In 2012-11-16: Larry Kate 

и так далее. Благодаря!

Вот код PHP:

 $query = mysql_query("SELECT date, query FROM table6 ORDER BY date DESC LIMIT 20"); $group_date = null; while ($row = mysql_fetch_assoc($query)) { if ($group_date !== substr($row["date"], 0, 10)) { $group_date = substr($row["date"], 0, 10); echo "<h1>$group_date</h1>\n"; } echo "${row['query']}<br>\n"; } 

Вывод:

2012-11-18

Том

Майкл

2012-11-17

Erik

Джон

2012-11-16

Larry

Катя

Обратите внимание: хотя этот код «группирует» строки по одному столбцу, его можно легко расширить, чтобы группировать строки по нескольким столбцам. Оставленный как упражнение.

+1 хороший вопрос, ЭТО ВОПРОС НЕ ПРОСТО, КАК ЗАКАЗАТЬ ЗАПРОС!

Я думаю, что это можно сделать с GROUP_CONCAT функции GROUP_CONCAT . это будет сочетать результаты сопоставления, когда вы группируете их и разделяете их запятыми. Если у вас есть результаты, вы можете взорваться или сделать то, что хотите

http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php

Вам придется конвертировать и группировать по дате, а group_concat – имена. затем (в php или whathaveyou) взорвать имена запятыми и эхо-дате, за которой следуют имена для каждого результата.

Похоже, вы хотели PHP-способ решить эту проблему? ой

Использовать это:

 SELECT * FROM my_tables WHERE date > "2012-11-16" ORDER BY date LIMIT 4 

Попробуйте инструкцию WHERE:

  select * from my_table where date_column > "2012-11-18 00:00:00" and date_column < "2012-11-18 23:59:59" order by date_column 

Как насчет

  SELECT * FROM my_tables GROUP BY YEAR(date), MONTH(date), DAY(date) ORDER BY date DESC LIMIT 20