Предположим, что моя компания производит Sprockets и Widgets. Существует 2 разных типа.Запрос MS-Access для исключения совпадающих строк при определенных условиях
Таблица A
Product ProductLine
Widget1 Widget
Widget2 Widget
Sprocket1 Sprocket
Sprocket2 Sprocket
Позволяет также сказать, что есть 5 всего частей, которые входят в сборку виджетов и звездочки.
Таблица B
Part Product
PartA Widget1
PartB Widget2
PartC Sprocket1
PartD Sprocket2
PartE Widget1
partE Widget2
partE Sprocket1
PartE Sprocket2
Компания президент принимает решение прекратить производство всех Звездочки. Какой запрос MS-Access будет работать, чтобы вернуть список всех частей, используемых только в производстве Звездочек?
SELECT Part
FROM B
WHERE NOT EXISTS
(SELECT *
FROM A
WHERE A.Product = B.Product
AND A.ProductLine = "Widget")
Это возвращает все части, не используемые в производстве линии виджетов, т.е. всех частей, используемых Звездочки. Но он включает PartE, который также используется в линии Widget.
SQl - не мой сильный костюм. Я понимаю, что NOT EXISTS/Widget и EXISTS/Sprocket будут давать одинаковый набор результатов. Моя проблема заключается в том, чтобы отфильтровать части, которые используются как для виджетов, так и для звездочек. На самом деле существует более 2 ProductLines, поэтому использование чего-то по строкам COUNT() = 1 не очень полезно.
Это не домашнее задание. Моя компания не делает ни Widgets, ни Sprockets, но аналогия на 100% мертва. :)
Спасибо.
Есть ли ошибка в вашем SQL, например? часть не является столбцом таблицы a. – wumpz
Да, были столы назад. –