【问题标题】:SQL filter from many-to-many relationship多对多关系中的 SQL 过滤器
【发布时间】:2012-08-19 22:13:22
【问题描述】:

我有基本的多对多关系集与表categorieslocationscategories_locations 表。示例:

类别表

| ID | Name       |
| 1  | Category 1 |
| 2  | Category 2 |
| 3  | Category 3 |

位置表

| ID | Name       |
| 1  | Location 1 |
| 2  | Location 2 |
| 3  | Location 3 |

Categories_Locations 表

| category_id | location_id |
| 1           | 1           |
| 2           | 2           |
| 2           | 3           |
| 3           | 1           |
| 3           | 3           |

如何获取属于第 2 类同时也属于第 3 类的所有位置?在上面的示例中,这只会导致位置 3!

使用 OR 过滤很简单。只是一个普通的左连接,其中 category_id IN(匹配的类别)。但是,当我只想获取属于 category1 并且同时还属于 category2 的那些关系(等等)时,如何过滤?

【问题讨论】:

    标签: sql many-to-many relational-database


    【解决方案1】:
    select 
        Location_ID 
    from CategoryLocations
    where Category_ID in (2,3)
    group by Location_ID
    having COUNT(distinct Category_ID) = 2  -- this 2 is the number of items in the IN list above
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      相关资源
      最近更新 更多