【问题标题】:Select at least A and B from one to many table从一对多表中至少选择 A 和 B
【发布时间】:2012-07-10 23:44:25
【问题描述】:

我有一个与颜色表有关系的产品表

一个产品可以有多种颜色... exp:产品A:有红、绿蓝黄。

如何选择至少包含红色和绿色(动态)的产品?

示例:

Product: RED GREEN - PASS
Product: RED GREEN YELLOW - PASS
Product: RED YELLOW - FAIL

只喜欢连接表解决方案或独立子查询

这个问题与 One to Many search using AND condition

我正试图从根本上解决它。

提前致谢

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    这样的东西应该可以工作

    SELECT product.name
      FROM product
           JOIN color USING (product_id)
     WHERE color.name IN ('red', 'green')
     GROUP BY product.name
    HAVING COUNT(DISTINCT color.name) = 2
    

    HAVING 子句指定列表中的项目数。因此,如果您想要红色、绿色和黄色的产品,您可以将查询更改为

    SELECT product.name
      FROM product
           JOIN color USING (product_id)
     WHERE color.name IN ('red', 'green', 'yellow')
     GROUP BY product.name
    HAVING COUNT(DISTINCT color.name) = 3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 2015-08-04
      • 2011-06-25
      • 2015-09-03
      • 2017-08-08
      • 1970-01-01
      相关资源
      最近更新 更多