我有一个数据库(NexusDB(应该符合 SQL-92)),其中包含 Item 表、一个 Category 表和一个多对多 ItemCategory 表,它只是一对键。如您所料,项目被分配到多个类别。
我希望所有最终用户选择所有项目
物品编号 | 分类号
--------------------------------
01 | 01
01 | 02
01 | 12
02 | 01
02 | 02
02 | 47
03 | 01
03 | 02
03 | 14
等...
我希望能够选择分配给类别 X、Y 和 Z 但未分配给类别 P 和 Q 的所有 ItemID。
例如,对于上面的示例数据,假设我想获取分配给类别 01 或 02 但不是 12 的所有项目(产生项目 02 和 03)。类似于以下内容:
SELECT ItemID WHERE (CategoryID IN (01, 02))
...并从该集合中删除 SELECT ItemID WHERE NOT (CategoryID = 12)
这可能是一个非常基本的 SQL 问题,但它现在难倒我。任何帮助 w/b 表示赞赏。