Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сформировать запрос [IB5.x]


magician ©   (2005-04-30 07:31:00) 

Есть таблица связей содержащая два поля NN1 и NN2.
Например:
NN1 NN2
1 0
1 1
1 5
1 8
2 2
2 4
2 3
2 1
3 0
3 5
и т.д.
Мне необходимо получить номера NN1 в которых NN2 содержит все элементы множества A.
Например A={0,1}. Результат 0, 1.
Помогите пожайлуста. Хочется сделать поуму. Есть конечно вариант Select N1... where (n2) in {...}, а потом уже ручками проверить наличие всех нужных элементов, но этот способ какой - то кривой и по-мойму есть более элегантное решение данной проблемы.


ЮЮ   (2005-05-04 03:14:00) [1]

SELECT DISTINCT m0.nn1
FROM
 Table m0
 JOIN Table m1 ON (m0.nn1 = m1.nn1) AND (m1.nn2 = 1)
WHERE
 (m0.nn2 = 0)

При увеличени мощности множества добавить необходимое кол-во
 JOIN Table mX ON (m0.nn1 = mX.nn1) AND (m1.nn2 = X)
В WHERE - условие по первому элементу множества


Johnmen   (2005-05-03 09:16:00) [2]

>Мне необходимо получить номера NN1 в которых NN2 содержит все
>элементы множества A.
>Например A={0,1}. Результат 0, 1.

Результат неверен. Должен быть 1, 2, 3.
И даже это неверно, т.к. "NN2 содержит всеэлементы" есть явный абсурд...


Rule   (2005-04-30 11:29:00) [3]

судя по сформулированной задаче, это и есть решение, которое ты предложил ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо