0

ここに未経験のmysqlユーザー:)

私は2つのテーブルを持っています

1 つは、ユーザーが作成したイベントのリストを保持します。イベントの説明もあります。

もう 1 つのテーブルには、イベントの日付が保持されます。また、イベントの一意の ID もあります。1 つのイベントに複数の日付を関連付けることができます。

私の問題:

イベントと説明のリストを返したいと思います。現在、これには for each ループを使用しています。

例:

[loop]
    $list .= '<tr><td>$date</td><td>$description</td><tr>';
[/loop]

return $list;

ここで、1 つのイベントと同じ日付のイベントを表示する必要がありますが、説明を組み合わせます

例:

$list .= '
    <tr>
        <td>two-events-with-same-dates-here-but-shown-as-one</td>
        <td>$description 1<br />$description 2</td>
    </tr>
    ';
return $list;

したがって、私の考えは、日付ごとにグループ化し、新しいクエリを使用してグループごとにループを実行し、説明を 1 つの説明に結合することでした。

ループで新しいクエリを実行することは、私には間違っていて非効率に聞こえます.mysqlには、このようなもののためのいくつかのスマートな組み込み関数があると思いました.

アイデア?

4

1 に答える 1

1

結果を日付でソートしてから、日付が変わるまで < br/ > を php に追加するのはどうですか?

もう 1 つの解決策は、group_concat を使用することです。例:

select date, group_concat(description SEPARATOR '<br/>')
from events
group by date

これは発生します

'2012-01-01' | 'description1<br/> description2'
于 2012-09-23T18:07:48.103 に答える