1

表1

id | question
1  | who will win the election

表 2

id | answers | question id
1  | I will  | 1

表 3

id | photo | question id
1  | xy.gif| 1

表 4 * ユーザーは質問の提案と他のユーザーへの投票の両方を行うことができます

id | username
1  | joe

表 5

id | vote | question_id | user_id
1  | He   | 1           | 1

1 回のクエリで次の情報を取得するクエリは何ですか?

  • t1.* (すべての質問)
  • t2 質問に関連するすべての回答
  • t3 質問に関連するすべての写真
  • 各質問の作成者の t4 ユーザー名
  • t5 質問に対する投票 (一部の質問には、ログインしているユーザーの投票がない可能性があります)

  • 私の問題は、投票を取得する最後のポイントです(ただし、すべての質問に特定のログインユーザーによる投票があるわけではありません)

私のクエリは次のようになります。

            SELECT 
        poll_questions.id,
        poll_questions.question,
        poll_questions.qmore,
        poll_questions.total_votes,
        poll_questions.active,
        poll_questions.created_at,
        poll_answers.answer,
        poll_answers.votes,
        poll_answers.id AS answer_id,
        poll_photos.photo_name_a,
        vote_history_raw.vote,
        users.username

        FROM poll_questions 

        LEFT JOIN (poll_answers, poll_photos)  
            ON (poll_answers.question_id = poll_questions.id AND
                poll_photos.question_id = poll_questions.id
                )
        LEFT JOIN users ON poll_questions.author = users.id 

        INNER JOIN vote_history_raw ON users.id = vote_history_raw.user_id 

        WHERE poll_questions.active = 1 

        ORDER BY poll_questions.created_at DESC 

どうもありがとう!

4

1 に答える 1

0

試していませんが、これは機能しますか?

  SELECT 
    poll_questions.id,
    poll_questions.question,
    poll_questions.qmore,
    poll_questions.total_votes,
    poll_questions.active,
    poll_questions.created_at,
    poll_answers.answer,
    poll_answers.votes,
    poll_answers.id AS answer_id,
    poll_photos.photo_name_a,
    vote_history_raw.vote,
    users.username

    FROM poll_questions 

    LEFT JOIN (poll_answers, poll_photos)  
        ON (poll_answers.question_id = poll_questions.id AND
            poll_photos.question_id = poll_questions.id
            )
    LEFT JOIN users ON poll_questions.author = users.id 

    LEFT JOIN vote_history_raw ON (users.id = vote_history_raw.user_id OR users.id <> vote_history_raw.user_id AND vote_history_raw.user_id IS NOT NULL)

    WHERE poll_questions.active = 1 

    ORDER BY poll_questions.created_at DESC 
于 2012-09-04T15:49:49.210 に答える