【问题标题】:How to join 2 tables with select and count in a single query如何在单个查询中使用 select 和 count 连接 2 个表
【发布时间】:2020-11-17 16:09:56
【问题描述】:

我是 stackoverflow 的新手,我可能对你们中的大多数人有一个非常简单的问题 :)

对php和mysql的了解不多,所以我决定寻求帮助。

我有 2 张桌子:

第一个名为 tags 的表,其中包含 idname

第二个表称为products,我的重点是description

这就是我想要完成的:

tags表中选择name,传到products表中,找出里面有多少个产品包含name products 表格 description 并获取 count。也只显示计数大于 0 的结果,用 0 值隐藏 name。并按计数对结果进行排序,从高到低。

最终结果示例:

name1 (15)、name2 (9)、name3 (5) 等

name4 (0) - 隐藏

希望有人能理解我在这里写的东西 omg :)

我正在编辑现成的脚本,对php和mysql知之甚少,所以不要对我苛刻:)

【问题讨论】:

    标签: php mysql string count inner-join


    【解决方案1】:

    您可以加入和聚合:

    select t.name, count(*) cnt
    from tags t
    inner join products p on p.description like concat('%', p.name, '%')
    group by t.id, t.name
    

    我在group by 子句中添加了标签的id,以防有重复的标签names - 如果没有,这也不会造成伤害。

    【讨论】:

    • 非常感谢,你告诉我正确的路径:)我需要更改 concat('%', p.name, '%')
    • 非常感谢您的帮助,您为我指明了正确的路径:) 我需要将 concat('%', p.name, '%') 更改为 concat('%', t .name, '%') 因为结果效果不佳。添加了一些 WHERE,WHERE 是默认搜索的一部分,并在最后添加了 ORDER BY cnt DESC,一切正常:D 你帮了我很多:)
    【解决方案2】:

    尝试 1 - 这将找到 '%' tags.name '%'

    SELECT count(name) as c, MIN(name) as n FROM tags 
    LEFT JOIN products 
    ON products.description LIKE CONCAT( '%', tags.name, '%' ) 
    GROUP BY tags.name 
    ORDER BY COUNT(name) DESC
    

    尝试 2 - 添加 WHERE tags.id 0

    SELECT count(name) as c, MIN(name) as n FROM tags 
    LEFT JOIN products 
    ON products.description LIKE CONCAT( '%', tags.name, '%' ) 
    WHERE tags.id <> 0
    GROUP BY tags.name 
    ORDER BY COUNT(name) DESC
    

    尝试 3 - 如果您需要多个隐藏标签,您可以在标签中添加一列用于“隐藏”。

    SELECT count(name) as c, MIN(name) as n FROM tags 
    LEFT JOIN products 
    ON products.description LIKE CONCAT( '%', tags.name, '%' ) 
    WHERE tags.hide = 0
    GROUP BY tags.name 
    ORDER BY COUNT(name) DESC
    

    【讨论】:

      猜你喜欢
      • 2017-09-07
      • 2014-07-17
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      相关资源
      最近更新 更多