Модераторы: Akina
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Помгоите составить запрос. 
:(
    Опции темы
SID_M
Дата 1.5.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 11.2.2005
Где: Россия, г. Москва

Репутация: нет
Всего: нет



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

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

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




--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой.
PM MAIL ICQ Skype GTalk   Вверх
Marriage
Дата 1.5.2005, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Попробуй такой

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


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
SID_M
Дата 2.5.2005, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 11.2.2005
Где: Россия, г. Москва

Репутация: нет
Всего: нет



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



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

--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой.
PM MAIL ICQ Skype GTalk   Вверх
Stampede
Дата 2.5.2005, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: нет
Всего: 144



SID_M

Ответил тебе в форуме Общие вопросы по базам данных: http://forum.vingrad.ru/index.php?showtopi...ndpost&p=397962
PM WWW   Вверх
Akina
Дата 3.5.2005, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Посмотри такой подход:

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SID_M
Дата 4.5.2005, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 11.2.2005
Где: Россия, г. Москва

Репутация: нет
Всего: нет



Огромное спасибо всем, как я сам не догадался! smile
--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой.
PM MAIL ICQ Skype GTalk   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.