2017-09-01 67 views
0

好的,我知道,可以在查詢中使用count和inner join,但我不知道我想要的是否可能。是否有可能在這樣的查詢中使用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... 
    } 

我試圖做一個有點論壇,這是給我的答案,誰寫的答案成員。 我已經做了一個腳本,這使得它可以upvote答案(AJAX)。當有人upvotes記錄在另一張表中創建一個這樣的答案:

enter image description here

我這是怎麼CONTROLE誰給予好評,其回答和時間。

我可以簡單地爲每個答案製作另一個查詢,該查詢檢查是否存在具有成員ID,答案ID和問題ID的記錄。這意味着如果有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