Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Помгоите составить запрос.


Автор: SID_M 1.5.2005, 16:25
Народ, мастера SQL! Помогите запросик составить...
Есть две таблицы
Documents(ID, Name, ...)
DocumentClassifyers(ID, DocID, ClassifyerID, ...)
связь Documents.ID -> DocumentClassifyers.DocID

Есть еще список, состоящий из ClassifyerID...

Смысл понятен? Есть документ и у него может быть куча классификаторов. Нужно сделать выборку по списку классификаторов. Т.е. вывести документы у которых есть все классификаторы из списка...
В реляционной алгебре для такого дела есть оператор деления, а вот как это дело написать на SQL?




Автор: Marriage 1.5.2005, 19:08
Попробуй такой

Select Documents.name from Documents
where fk_id in
(
select DocId from DocumentClassifyers where ClassifyerID in (список классификаторов)
)

Автор: SID_M 2.5.2005, 18:07
Цитата(Marriage @ 1.5.2005, 19:08)
Select Documents.name from Documents
where fk_id in
(
select DocId from DocumentClassifyers where ClassifyerID in (список классификаторов)
)



В этом случае выведутся документы в которых просто присутствуют данные классификаторы, хотя бы 1 из них...
А нужно получить документы в которых есть все из списка. Т.е. выведутся лишние документы...

Автор: Stampede 2.5.2005, 23:00
SID_M

Ответил тебе в форуме Общие вопросы по базам данных: http://forum.vingrad.ru/index.php?showtopic=50700&view=findpost&p=397962

Автор: Akina 3.5.2005, 08:02
Посмотри такой подход:

Берем таблицу DocumentClassifyers, выбираем из нее DocID, ClassifyerID, делаем Distinct по обоим полям, чтобы отсечь дубли буде они есть (а коли их точно нет, то и не надо), установив условие на вхождение ClassifyerID в заданный список, и после этого считаем Count... в результирующий отбор включаем только те записи, у которых кол-во совпадает с заданным количеством классификаторов - и у тебя в руках DocID нужных документов.

Автор: SID_M 4.5.2005, 09:59
Огромное спасибо всем, как я сам не догадался! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)