2

次のテーブル構造があります。

 users:
    id PK
    username
    email
    salt
    password
    date_created

questions:
    id PK
    user_id FK(users)
    title
    date_created
    date_updated

answers:
    id PK
    question_id FK(questions)
    user_id FK(users)
    body
    date_created

したがって、これらのテーブルからデータを取得し、ユーザーの最後の 5 つの質問と、各質問の最初の 3 つの回答を表示するクエリが必要です。このようなもの:

"What is my favorite color? posted by user

red - posted by user1
green - posted by user2
yellow - posted by user3

.....
"

これが私が目指しているディスプレイです。1つのクエリでこれを行うにはどうすればよいですか? グループ連結を使用して、1 つの質問に対する複数の回答をグループ化する必要がありますか? または、結果を取得し、PHP で配列を解析して、回答を question_id でグループ化する必要があります。また、このクエリを非常に高速にする必要があります。1 つのクエリを作成するか、ユーザーの質問を取得してから質問に回答する複数のクエリを作成する方が高速になるかどうかはわかりません。

4

1 に答える 1

0

私が与える重要な「ヒント」は、GROUP_CONCAT( )内で通常の CONCAT() を使用できることだと思います。次に、JOIN と、おそらくコメントに記載されているいくつかの手法を使用して、これら 2 つの関数が出力を取得するために必要な中間結果セットを取得します。

于 2012-07-16T14:05:13.437 に答える