我有一个漫画网站并且已经实现了类似于StackOverflow的标记系统。
我希望通过引入SO风格的标记系统为用户提供更多的排序选项 - 每个用户都可以选择并删除1个或多个标签...每个漫画ID都与1个或多个标签相关联。
目标是:
我正在使用关系表来检查所选标签是否存在匹配的imgid。
所以在数据库中,为了使图像与多个标签相关联(它应该能够),我必须再次使用不同的tagid添加相同的imgid。
以下是查询:
$sql =
"SELECT tbl.*, t.*
FROM $table tbl
LEFT JOIN $assocTable a ON (tbl.id = a.imgID)
LEFT JOIN $tagsTable t ON (t.tagid = a.tagID)
WHERE ";
$sql .= !empty($_SESSION[$sessiontagIDs]) ? "a.tagID IN (" . implode(', ', $_SESSION[$sessiontagIDs]). ") " : "1 = 1";
$sql .= $catquery ." " . $order;
不幸的是,这意味着漫画现在显示两次查询:
我是否错误地设置了表格或查询?
谢谢!
答案 0 :(得分:3)
问题在于您为其匹配的每个标记获取漫画。也许你想要查询得到:
select distinct tbl.*
. . .
或者,如果您想同时使用这些代码,请使用group_concat()
将其添加到列表中:
select tbl.*, group_concat(t.tagname)
. . .
group by tbl.id