【发布时间】:2020-08-29 00:40:24
【问题描述】:
我有一个带有关联标签的问题场景——比如这里的 StackOverflow。我想列出与某个问题相关的所有标签以及每个标签的计数,该计数告诉其他问题使用/引用同一标签的次数。
标签表: tag_id , tag_name(tag_name 是唯一的)
TAGS CROSS REFERENCE TABLE:tag_id、question_id(tag_id 引用tags 表中的tag_id,以及questions 表中的question_id)。
问题表:question_id,问题。
我的代码列出了与特定 question_id 关联的所有标签,但每个标签的总使用量的 count()/num 始终为“1”,但应该总计不同的数字...
$question_id = 268;
$sql = 'SELECT tags.tag_id, tag_name, count(tags.tag_id) AS num
FROM tags LEFT JOIN tags_x
ON tags.tag_id = tags_x.tag_id
WHERE tags_x.question_id = ?
GROUP BY tags.tag_name';
$stmt = $db->prepare($sql);
$stmt->execute([$question_id]);
$result = $stmt->fetchAll(pdo::FETCH_ASSOC);
$out = '';
foreach($result as $row){
$tag_id = $row['tag_id'];
$tag_name = $row['tag_name'];
$num = $row['num'];//count of all items referencing same tagname
echo $tag_id.' - '.$tag_name.' - '.$num.'<br>';
}
【问题讨论】:
标签: mysql sql join group-by count