У меня есть эта таблица 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
. это будет сочетать результаты сопоставления, когда вы группируете их и разделяете их запятыми. Если у вас есть результаты, вы можете взорваться или сделать то, что хотите
Вам придется конвертировать и группировать по дате, а 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