【问题标题】:SQL query to find id's and names of all good, that have all possible tags. Using SQLiteSQL 查询查找具有所有可能标记的所有好的 id 和名称。使用 SQLite
【发布时间】:2020-05-20 16:48:45
【问题描述】:

我有桌子:

标签

id:整数

名称:文本

商品

id:整数

名称:文本

TAGS_GOODS

tag_id:整数

goods_id:整数

唯一(tag_id,goods_id)

所以我要问的是如何找到分配了所有标签的商品的 ID 和名称。对不起初学者的问题。我将不胜感激;)

【问题讨论】:

  • 我删除了不一致的数据库标签。仅使用您真正使用的数据库进行标记。

标签: sql database sqlite tags


【解决方案1】:

这是一种方法:

SELECT g.id, g.name
FROM GOODS g
INNER JOIN TAGS_GOODS tg ON tg.goods_id = g.id
GROUP BY g.id, g.name
HAVING COUNT(*) = (SELECT COUNT(*) FROM TAGS);

这里的逻辑是按每个商品聚合,然后断言该商品的记录数与可用标签的总数匹配。此答案假定每个商品和标签在其自己的表中都是唯一的,并且联结表 TAGS_GOODS 也不会有重复的关系。

【讨论】:

  • 哦,是的,我明白了。谢谢!
【解决方案2】:

使用内连接

SELECT goods.id, goods.name FROM goods INNER JOIN tags_goods ON goods.id=tags_goods INNER JOIN tags ON tags_goods.id=tags_id;

【讨论】:

    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 2016-11-12
    • 2016-06-01
    • 2011-06-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多