2017-09-01 12 views
0

さて、クエリでカウントと内部結合を使用することは可能ですが、必要なものがあるかどうかはわかりません。このように1つのクエリでCOUNTとINNER JOINを使用することはできますか?

私はこれだ:私はフォーラムのビットを作るしようとしていると、これが私の答えと答えを書いたメンバーを与えている

$queryA = "SELECT 
     answer.a_id, 
     answer.answer, 
     answer.timestamp, 
     answer.m_id, 
     member.m_id, 
     member.first_name, 
     member.middle_name, 
     member.last_name, 
     member.picture 
      FROM 
     answers AS answer 
      INNER JOIN 
     members AS member ON answer.m_id = member.m_id 
      WHERE q_id = '".$q_id."' 
      ORDER BY a_id DESC 
    "; 
    $resultA = $con->query($queryA) or die(mysqli_error($con)); 
    while ($rowA = $resultA->fetch_assoc()) { 
     ...my code... 
    } 

を。 私はスクリプトを作ったので、答えをアップアップすることができます(AJAX)。誰かがレコードは次のように別のテーブルに作成された答えをupvotes時:

enter image description here

は、これは誰が答えたupvoteとするとき、私はcontrole方法です。

メンバーID、回答ID、および質問IDを持つレコードがすでに存在するかどうかを確認する、私は単にEACH回答の別のクエリを作成できます。つまり、回答が50件ある場合は、データベースからの50件のコールが返されます。私はそれを望んでいない。 これを何らかの形で上記のクエリに含めることはできますか?

その後、私はこのような何かを作ることができるようにしたいと思います:

if($rowA['counted'] > 0) { 
    ...show this.. 
} 
else { 
    ... or this 
} 

ありがとうございました。

+0

はあなたでしたSQLFiddleにあなたのテーブル(回答&メンバー)を追加しますか? 同じ質問をあなたと同じように実行し、サンプルデータと一緒にオンラインデモを行うことができます。 http://sqlfiddle.com –

答えて

0

特定のメンバーがupvotedしている場合に選択して追加し、見つける:

(SELECT COUNT(*) FROM votes v WHERE 
     v.m_id = [current_member.id] AND 
     v.a_id = answer.a_id AND 
     v.q_id = q_id) as has_voted 

は会員非特異投票数見つける:上記と同様に、しかしアウトM_IDまま:

(SELECT COUNT(*) FROM votes v WHERE 
     v.a_id = answer.a_id AND 
     v.q_id = q_id) as count_voted 
関連する問題