0

私はこの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   |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

等々。次のコードを使用して、結果を取得し、日付順に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

等々。ありがとう!

4

5 に答える 5

2

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

エリック

ジョン

2012-11-16

ラリー

ケイト

このコードは行を1列で「グループ化」しますが、行を複数の列でグループ化するように簡単に拡張できることに注意してください。演習として残しました。

于 2012-11-18T19:22:07.643 に答える
0

+1 良い質問です。この質問は、単にクエリを注文する方法ではありません!!

GROUP_CONCATこれはfunctionを使用して実行できると思います。これにより、グループ化してコンマで区切ると、一致する結果が結合されます。結果が得られたら、爆発したり、やりたいことをしたりできます

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

日付で変換してグループ化し、名前を group_concat する必要があります。次に (php または whathaveyou で) 名前をコンマで区切り、日付とそれに続く各結果の名前をエコーし​​ます。

editこれを解決するための PHP の方法が必要だったように見えますか? おっとっと

于 2012-11-18T17:13:06.597 に答える
-1

これを使って:

SELECT * FROM my_tables WHERE date > "2012-11-16" ORDER BY date LIMIT 4
于 2012-11-18T17:08:04.283 に答える
-1

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
于 2012-11-18T17:11:48.563 に答える
-1

どうですか

 SELECT * FROM my_tables GROUP BY YEAR(date), MONTH(date), DAY(date) ORDER BY date DESC LIMIT 20
于 2012-11-18T17:16:47.213 に答える