[英]Tricky query: getting Count of one column with 2 conditions for another distinct column
我正在努力应对具有挑战性的查询。
我有2个表格: posts
, answers
posts
具有ID
, PID
, name
answers
具有ID
, PID
, approved
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.