首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标记系统问题-重复图像

标记系统问题-重复图像
EN

Stack Overflow用户
提问于 2013-03-04 00:16:52
回答 1查看 44关注 0票数 1

我有一个漫画网站,并已经实现了类似于StackOverflow的标签系统。

我想给用户更多的排序选项,通过引入这样一个风格的标签系统-每个用户可以选择和删除一个或多个标签.每个漫画书都与一个或多个标签相关联。

目标是:

  • 如果没有选择类别和标签,则函数将显示所有的漫画。
  • 如果选择了x类,则只显示该类别的漫画
  • 如果选择了x类和标签x,则将显示x类和标签x中的所有漫画。
  • 如果没有选择任何类别,但选择了标记x、y、z,则函数将只显示与这些标记关联的那些漫画。

我使用一个关系表来检查所选的标签是否有匹配的imgid。

因此,在数据库中,为了使图像与多个标记相关联(应该能够),我必须再次使用不同的tagid添加相同的imgid。

以下是查询:

代码语言:javascript
复制
    $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;

不幸的是,这意味着一个漫画现在正在从查询中显示两次:

表或查询设置错误吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-04 00:20:15

问题是你正在为它匹配的每一个标签获取漫画。也许您希望查询得到:

代码语言:javascript
复制
select distinct tbl.*
. . .

或者,如果您同时需要这些标记,请使用group_concat()将它们放在列表中:

代码语言:javascript
复制
select tbl.*, group_concat(t.tagname)
. . .
group by tbl.id
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15192608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档