繁体   English   中英

棘手的查询:获得具有两个条件的另一列的另一列的计数

[英]Tricky query: getting Count of one column with 2 conditions for another distinct column

我正在努力应对具有挑战性的查询。

我有2个表格: postsanswers

posts具有IDPIDname answers具有IDPIDapproved

ID是用户ID, PID是帖子ID。

我想做的是列出所有帖子名称( posts.name )以及多少个人( ID )回复了他们的帖子。 诀窍在于,我只想统计已批准的回复( answers.approved = 'Y' ),而我不想统计创建帖子的人,因此( post.ID != answers.ID )。

因此结果应显示为:

Name       People with Approved Replies
Name 1                               10
Name 2                                7

我当前的代码是一团糟,错误的方法。 它只给出一个结果,并且答复数太远/太高。 但是,这是我目前拥有的:

$results = $dbh->prepare("select COUNT(DISTINCT answers.ID) AS reply,
 posts.ID,    
 posts.PID,
 posts.name,
 answers.PID,
 answers.approved
FROM answers
LEFT JOIN posts ON answers.PID=posts.PID
WHERE (answers.approved = 'Y') LIMIT 10
GROUP BY answer.ID");

$results->execute();
$row = $results->fetchAll(PDO::FETCH_ASSOC);

我认为这个查询应该做你想要的

SELECT 
    p.name,
    p.id,
    p.pid,
    (SELECT COUNT(DISTINCT id) 
     FROM answers 
     WHERE  answers.pid = p.pid 
     AND    answers.approved = 'Y' 
     AND    answers.id != p.id) as reply
FROM posts p

这将选择帖子名称,ID,用户ID和不同批准答案的数量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM