У меня есть база данных (NexusDB (предположительно совместимая с SQL-92)), которая содержит таблицу Item, таблицу Category и таблицу ItemCategory «многие ко многим», представляющую собой просто пару ключей. Как и следовало ожидать, элементы относятся к нескольким категориям.
Я хочу, чтобы все конечные пользователи выбрали все элементы, которые
ItemID | CategoryID
--------------------------------
01 | 01
01 | 02
01 | 12
02 | 01
02 | 02
02 | 47
03 | 01
03 | 02
03 | 14
и т.д ...
Я хочу иметь возможность выбрать все ItemID, которые назначены для категорий X, Y и Z, но НЕ назначены для категорий P и Q.
Например, в приведенных выше примерах данные говорят, что я хотел бы получить все предметы, отнесенные к категориям 01 или 02, но НЕ 12 (получая предметы 02 и 03). Что-то вроде:
ВЫБЕРИТЕ ItemID WHERE (CategoryID IN (01, 02))
... и удалить из этого набора SELECT ItemID WHERE NOT (CategoryID = 12)
Вероятно, это довольно простой вопрос SQL, но он меня сейчас озадачивает. Любая помощь ж / б приветствуется.