![]() |
|
Модераторы: Akina |
![]()
|
|
| SID_M |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 11.2.2005 Где: Россия, г. Москва Репутация: нет Всего: нет |
Народ, мастера SQL! Помогите запросик составить...
Есть две таблицы Documents(ID, Name, ...) DocumentClassifyers(ID, DocID, ClassifyerID, ...) связь Documents.ID -> DocumentClassifyers.DocID Есть еще список, состоящий из ClassifyerID... Смысл понятен? Есть документ и у него может быть куча классификаторов. Нужно сделать выборку по списку классификаторов. Т.е. вывести документы у которых есть все классификаторы из списка... В реляционной алгебре для такого дела есть оператор деления, а вот как это дело написать на SQL? --------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой. |
|||
|
||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
Попробуй такой
Select Documents.name from Documents where fk_id in ( select DocId from DocumentClassifyers where ClassifyerID in (список классификаторов) ) -------------------- Praemonitus, praemunitus |
|||
|
||||
| SID_M |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 11.2.2005 Где: Россия, г. Москва Репутация: нет Всего: нет |
В этом случае выведутся документы в которых просто присутствуют данные классификаторы, хотя бы 1 из них... А нужно получить документы в которых есть все из списка. Т.е. выведутся лишние документы... --------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой. |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: нет Всего: 144 |
SID_M
Ответил тебе в форуме Общие вопросы по базам данных: http://forum.vingrad.ru/index.php?showtopi...ndpost&p=397962 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Посмотри такой подход:
Берем таблицу DocumentClassifyers, выбираем из нее DocID, ClassifyerID, делаем Distinct по обоим полям, чтобы отсечь дубли буде они есть (а коли их точно нет, то и не надо), установив условие на вхождение ClassifyerID в заданный список, и после этого считаем Count... в результирующий отбор включаем только те записи, у которых кол-во совпадает с заданным количеством классификаторов - и у тебя в руках DocID нужных документов. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| SID_M |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 11.2.2005 Где: Россия, г. Москва Репутация: нет Всего: нет |
Огромное спасибо всем, как я сам не догадался!
--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой. |
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |