是否可以在这样的一个查询中使用COUNT和INNER JOIN

时间:2017-09-01 08:50:39

标签: php mysqli

好的,我知道,在查询中可以使用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)。当有人提出答案时,会在另一个表中创建一条记录,如下所示:

enter image description here

这就是我如何控制谁回答哪个答案以及何时回答。

我可以简单地为每个答案进行另一个查询,检查是否已存在具有成员ID,答案ID和问题ID的记录。这意味着如果有50个答案,那将是来自数据库的另外50个调用。我不想要那个。 是否有可能以某种方式在上面的查询中包含这个?

之后我希望能够做出这样的事情:

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

谢谢。

1 个答案:

答案 0 :(得分:0)

查找特定成员是否已投票,添加到SELECT:

(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