Hello, Tonal!
You wrote on Wed, 06 Sep 2006 15:25:30 +0700:
T> А если второй вариант чуть подправить?
T> select a.* from agrees a
T> left join payments p on p.agr_id=a.id
T> where p.agr_id is null
Уже ответил. Та же мысль пришла в голову чуть раньше. :)
Удач
--
Alexander A. Venikov, Tobolsk, R
Hello, Ded!
You wrote on Wed, 06 Sep 2006 12:22:14 +0400:
D> Alexander A. Venikov wrote:
>> Так что... Запрос не по одному разу выполнялся, в среднем соотношение в
>> пользу варианта с not exists. Возможно, на других данных картина будет
>> несколько другой, но вот так на паре наобум взятых та
Alexander A. Venikov пишет:
Вариант с not exists:
select * from agrees a
where not exists (select agr_id from payments where agr_id=a.id)
Вариант с left join
select * from agrees a
left join payments p on p.agr_id=a.id
where p.agr_id is null
А если второй вариант чуть подправить?
select a.
Hello, Alexander!
You wrote to Качановский Дмитрий on Wed, 6 Sep 2006 14:08:41 +0600:
Вот так
select a.* from agrees a
left join payments p on p.agr_id=a.id
where p.agr_id is null
несколько лучше (выбирается столько же столбцов, что и в первом варианте), но
все равно уступает not exists.
Уд
Alexander A. Venikov wrote:
Так что... Запрос не по одному разу выполнялся, в среднем соотношение в
пользу варианта с not exists. Возможно, на других данных картина будет
несколько другой, но вот так на паре наобум взятых таблиц я получил
явное преимущество not exists по сравнению с left join.
Hello, Качановский!
You wrote on Wed, 6 Sep 2006 09:28:22 +0300:
>> Можно left join использовать и "where t2.somefield is null", однако, not
>> exists лучше imho. Специального оператора (кроме not exists) не
>> припоминаю.
КД> чем это not exist лучше???
КД> если я все правильно путаю, то НОТ
Alexander A. Venikov wrote:
Можно left join использовать и "where t2.somefield is null", однако, not
exists лучше imho. Специального оператора (кроме not exists) не припоминаю.
У Грабера нашел оператор EXCEPT:
select A
EXCEPT
select B
но, как я понимаю, "его нет".
t1 left join t2 и проверка какого нибудь not null
поля из второй таблицы на null.
ежели поле, по которому join выполняется, будет неуникальным, то еще и
distinct понадобиться.
Чего-то с утра фигню какую-то несу... :)
With b/r. Gleb.
> ÃÃÃÃÃ left join ÃÃÃÃÃÃÃÃÃÃÃÃ Ã "where t2.somefield is null", ÃÃÃÃÃÃ, not
> exists ÃÃÃÃÃ
imho. óÃÃ
ÃÃÃÃÃÃÃÃÃ ÃÃÃ
ÃÃÃÃÃÃ (ÃÃÃÃÃ
not exists) ÃÃ
> ÃÃÃÃÃÃÃÃÃÃ.
ÃÃ
à ÃÃà not exist ÃÃÃÃÃ
???
Ã
ÃÃÃ Ã ÃÃÃ
ÃÃÃÃÃÃÃÃ
"Yurij" <[EMAIL PROTECTED]>
сообщил/сообщила в новостях следующее:
news:[EMAIL PROTECTED]
Konstantin R. Beliaev wrote:
Напомните, плиз: есть ли в полуторке оператор, позволяющий вывести
данные из таблицы 1 _кроме_ данных, присутствующих в таблице 2 ?
t1 left join t2 и проверка какого ниб
Hello, Konstantin!
You wrote on Tue, 05 Sep 2006 18:40:02 +0400:
KRB> Напомните, плиз: есть ли в полуторке оператор, позволяющий
KRB> вывести данные из таблицы 1 _кроме_ данных, присутствующих
KRB> в таблице 2 ? Можно конечно использовать not exists(), но
KRB> в памяти вертится какой-то специал
Konstantin R. Beliaev wrote:
> Напомните, плиз: есть ли в полуторке оператор, позволяющий вывести
> данные из таблицы 1 _кроме_ данных, присутствующих в таблице 2 ?
t1 left join t2 и проверка какого нибудь not null
поля из второй таблицы на null.
"Konstantin R. Beliaev" <[EMAIL PROTECTED]> wrote in message news:[EMAIL
PROTECTED]
>
> Напомните, плиз: есть ли в полуторке оператор, позволяющий вывести
> данные из таблицы 1 _кроме_ данных, присутствующих в таблице 2 ?
> Можно конечно использовать not exists(), но в памяти вертится какой-то
Напомните, плиз: есть ли в полуторке оператор, позволяющий вывести
данные из таблицы 1 _кроме_ данных, присутствующих в таблице 2 ?
Можно конечно использовать not exists(), но в памяти вертится какой-то
специальный оператор...
Или ошибаюсь?
14 matches
Mail list logo