选择项目仅在某些类别中的行
Posted
技术标签:
【中文标题】选择项目仅在某些类别中的行【英文标题】:Select rows where item is only in certain categories 【发布时间】:2016-12-09 16:17:10 【问题描述】:所以我有一个有点复杂的 mysql 查询问题。我有 3 张桌子。一个是项目表。一个是类别表。一个是只有两个字段 itemID 和 categoryID 的链接表。这是多对多的关系,所以一个项目可以属于多个类别,每个类别可以有多个项目。现在类别表中的两个字段是 isactive 和 ismain。它们只是 1 或 0 的布尔值。我想获取仅属于 isactive=0 或 ismain=0 或两者兼有的类别的所有项目。
我花了一些时间设置了一个 sql fiddle 供某人玩耍。 http://sqlfiddle.com/#!9/b03842/2
【问题讨论】:
【参考方案1】:使用子查询的解决方案:
SELECT DISTINCT i.* FROM cart_item i
JOIN cart_item_category ic ON i.itemref = ic.itemref
WHERE ic.catid IN (
SELECT id FROM cart_category WHERE active = 0 OR ismain = 0
)
【讨论】:
但您可以将这些条件更改为 active 1 OR ismain 1,因为您接受这些列的 NULL 值。 这更近了。但它仍然返回属于有效和无效类别的项目。 您必须添加AND NOT IN (SELECT id FROM cart_category WHERE active = 1 AND ismain = 1)
吗?类似的东西?
对不起,sqlfiddle 目前不适合我,所以我无法测试它。我可以稍后再试。
@dmikester1,现在可以测试了。这个结果不正确? sqlfiddle.com/#!9/b03842/32/0以上是关于选择项目仅在某些类别中的行的主要内容,如果未能解决你的问题,请参考以下文章
仅在某些条件下使用 Redshift 中的 SQL 对具有相同名称的行进行分组