【问题标题】:How to realize a navigation through a tag cloud in MySQLMySQL中如何实现标签云导航
【发布时间】:2011-06-13 09:34:10
【问题描述】:

我想编写一个网络应用程序来订购我的照片。我不想将它们分类,而是想为某些图片添加标签。我想有两张桌子,一张用于图片:

uniqueID   imagename
1          photo1.jpg
2          photo2.jpg
3          photo3.jpeg
4          pic4.jpeg

还有一张标签表:

ID         tag
1          California
1          Peter
1          beach
2          California
2          L.A.
2          Peter
3          California
3          Susan
4          Kansas
4          Claudia

启动应用程序后,标签会根据数据库中出现的次数以大小显示。当我点击一个标签(例如“加利福尼亚”)时,所有剩余的图像标签,也应该显示在下一页上(这里:“彼得”、“海滩”、“洛杉矶”、“苏珊”但不是“堪萨斯”和“克劳迪娅”)。当我之后点击标签“peter”时,应该显示照片 1 和 2 的所有剩余标签(“beach”、“L.A.”)。

是否有可能通过一个查询来实现这两件事?

  1. 从图像表中选择图像名称,在标签表中包含所有选定的标签
  2. 为那些在标签表中也具有选定标签的图像 (ID) 选择所有剩余标签及其 COUNT()。

感谢您的帮助

斯文

【问题讨论】:

    标签: mysql optimization methods tags tag-cloud


    【解决方案1】:

    对于 1) 您必须使用带有 JOINS 的 SELECT 查询。例如:

    SELECT     *
    FROM       images i
    INNER JOIN categories c
            ON i.id = c.id
    

    对于 2) 我不太确定我理解剩余标签的含义。

    【讨论】:

    • 我同意 INNER JOIN,但我不知道如何构建 WHERE 子句。如果我想拥有所有标记为“加利福尼亚”和“彼得”的图像,它必须类似于... WHERE tag='California' && tag='Peter' 。但是由于所有标签都在同一列中,因此永远不会有一个条目可以同时具有两个标签(只有一个标签列!)。
    • 剩余标签 例如,每个图像都有 3 个标签。当我选择两个标签(例如“California”和“Peter”)时,我想获得“beach”、“L.A.”作为上表的结果(“L.A.”是图 2 中的“剩余标签”,“beach”是图 1 中的“剩余标签”)“剩余标签”用于计算所有图像的标签云有标签“加利福尼亚”和“彼得”。例如,标签“Susan”不应出现在新标签云中,因为 Image3 未使用“Peter”标签(仅使用“California”)。
    猜你喜欢
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2016-07-03
    • 2015-01-25
    • 2015-12-08
    相关资源
    最近更新 更多