Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как выделить подмножество? / 5 сообщений из 5, страница 1 из 1
19.01.2004, 09:29
    #32379752
Artfil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выделить подмножество?
Имеются две таблицы со общим столбцом id. 1 таблица является подмножеством 2. Как выделить те id, которые не попадают в таблицу 1. То есть мне нужен аналог select minus select из Oracla.
...
Рейтинг: 0 / 0
19.01.2004, 09:36
    #32379760
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выделить подмножество?
Оно?

Код: plaintext
1.
2.
select t2.id
from t2 left join t1 on t1.id=t2.id
where t1.id is null
...
Рейтинг: 0 / 0
20.01.2004, 03:51
    #32381076
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выделить подмножество?
fedd
мне кажется (не проверял) здесь будет возвращаться всегда пустой набор... Ты сам-то проверял то, что советуешь?

не ручаюсь за скорость, но особенно для небольших объемов будет нормально

Код: plaintext
1.
 select * from t2 where id not in (select id from t1)
...
Рейтинг: 0 / 0
20.01.2004, 10:05
    #32381232
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выделить подмножество?
не, не проверял!

но такую sql конструкцию использую(овал) постоянно в mysql и в access!

а сейчас мне сказали, что в firebird это не сработает... но я не понимаю почему!

таблица t1 присоединяется слева, то есть будут представлены все записи из t2, связанные с ними записи из t1. если связанных записей нет, то там будут null. их то мы и отбираем во where - то есть тех из t2, для которых нет t1, что человек и просил. что здесь может не работать??
...
Рейтинг: 0 / 0
20.01.2004, 11:19
    #32381393
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выделить подмножество?
>fedd

Приведенный запрос абсолютно адекватен. И работает везде.

Единственный момент - это скорость.
Наиболее быстро
SELECT T2.id FROM T2
WHERE NOT (T2.id = SOME (SELECT T1.id FROM T1))
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как выделить подмножество? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]