2

これはページ URL http://domain.com/testphp?id=1&mview=4です

選択肢は je_add_choiceという名前のテーブルから表示され、フィールド名が含まれています

  1. Choice_id
  2. poll_id
  3. Choice_creator_id
  4. 選択名
  5. 選択画像
  6. 説明
  7. 選択作成時間

特定の世論調査に対する投票とともに選択肢が表示されます。私がやりたいことは、選択肢を投票数順に表示する必要があることです。しかし問題は、選択肢の投票数はje_user_voteという名前の別のテーブルからの ものであり、フィールドが含まれています

  1. ユーザーID
  2. Poll_id
  3. Choice_id
  4. 投票_id (主キー)
  5. datetime_voted
  6. ユーザータイプ

投票ページでクエリを使用しました

select * from je_addchoice where poll_id='$poll_id'

このクエリでは、$pollid 変数は URL $_GET['id'] から取得されます。

クエリを次のように書き換えたい

select * from je_addchoice where poll_id='$poll_id' // append the code order by count(fieldname) from je_user_vote table.

私はすでに使用しました

SELECT *, (
            SELECT count(*) 
            FROM je_uservote T2 
            WHERE T2.pollid=T1.pollID 
            AND T2.choiceid=T1.choiceID) AS votes
FROM je_addchoice T1
ORDER BY votes

しかし、空白のページが表示されます。誰でもこの問題を解決するために私を助けることができます。これを読んでくれてありがとう、解決するのを手伝ってください

4

3 に答える 3

2

必要なのは、投票を計算するための左結合と集計関数だけです。ここで試すことができるクエリ(テストされていません):

"SELECT COUNT(*) AS total_votes, t1.* 
FROM je_add_choice t1
LEFT JOIN je_user_vote t2
    ON t1.choice_id=t2.choice_id
    AND t1.poll_id=t2.Poll_id
WHERE t1.poll_id = " . $poll_id . "
GROUP BY t1.choice_id
ORDER BY 1 ASC"
于 2012-11-28T05:14:27.223 に答える
1
SELECT COUNT(t2.choice_id) AS total_votes, t1.* 
    FROM je_addchoice t1
    LEFT JOIN je_user_vote t2
        ON t1.choice_id=t2.choice_id
        AND t1.poll_id=t2.Poll_id
    WHERE t1.poll_id = " . variable_name . "    
    GROUP BY t1.choice_id
    ORDER BY 1 DESC

お役に立てれば。

于 2012-11-28T12:39:50.497 に答える