Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 При выборке из разных таблиц лучше использовать сопоставления или вложенный запрос?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 428
есть ли разница?
select t1.f1
from t1, t2
where (t1.f1 = t2.f1)
  and (t1.f2 = 1)
  and (t2.f2 = 0)

--------

select f1
from t1
where f1 in
          (select f1
           from t2
           where f2 = 0)
  and f2 = 1


какую конструкцию и в каких случаях применять предпочтительнее и почему?
7 сен 12, 14:16    [13130031]     Ответить | Цитировать Сообщить модератору
 Re: При выборке из разных таблиц лучше использовать сопоставления или вложенный запрос?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37228
Ничего, что конструкции дают разный результат?
7 сен 12, 14:18    [13130044]     Ответить | Цитировать Сообщить модератору
 Re: При выборке из разных таблиц лучше использовать сопоставления или вложенный запрос?  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
TJ001,

from t1, t2

про это забудьте .
from t1
inner join t2 ...

from t1
join t2 ....



where f1 in
          (select f1
           from t2
           where f2 = 0)

имхо
про in тоже можно забыть,когда речь идет не о фиксированном перечислении значений

Откройте для себя exists.
7 сен 12, 14:21    [13130067]     Ответить | Цитировать Сообщить модератору
 Re: При выборке из разных таблиц лучше использовать сопоставления или вложенный запрос?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 428
Гавриленко Сергей Алексеевич
Ничего, что конструкции дают разный результат?

может я чего-то не понимаю?
declare @t1 table (f1 int, f2 int);
insert @t1 values (1,1)
insert @t1 values (2,0)
insert @t1 values (3,1)
insert @t1 values (4,1)

declare @t2 table (f1 int, f2 int);
insert @t2 values (1,1)
insert @t2 values (2,0)
insert @t2 values (3,0)
insert @t2 values (4,1)

select t1.f1
from @t1 t1, @t2 t2
where (t1.f1 = t2.f1)
  and (t1.f2 = 1)
  and (t2.f2 = 0)

--------

select f1
from @t1
where f1 in
          (select f1
           from @t2
           where f2 = 0)
  and f2 = 1


одинаковый результат
7 сен 12, 14:38    [13130242]     Ответить | Цитировать Сообщить модератору
 Re: При выборке из разных таблиц лучше использовать сопоставления или вложенный запрос?  [new]
iap
Member

Откуда: Москва
Сообщений: 47085
TJ001
Гавриленко Сергей Алексеевич
Ничего, что конструкции дают разный результат?

может я чего-то не понимаю?
declare @t1 table (f1 int, f2 int);
insert @t1 values (1,1)
insert @t1 values (2,0)
insert @t1 values (3,1)
insert @t1 values (4,1)

declare @t2 table (f1 int, f2 int);
insert @t2 values (1,1)
insert @t2 values (2,0)
insert @t2 values (3,0)
insert @t2 values (4,1)

select t1.f1
from @t1 t1, @t2 t2
where (t1.f1 = t2.f1)
  and (t1.f2 = 1)
  and (t2.f2 = 0)

--------

select f1
from @t1
where f1 in
          (select f1
           from @t2
           where f2 = 0)
  and f2 = 1


одинаковый результат
а так?
declare @t1 table (f1 int, f2 int);
insert @t1 values (1,1)
insert @t1 values (2,0)
insert @t1 values (3,1)
insert @t1 values (4,1)

declare @t2 table (f1 int, f2 int);
insert @t2 values (1,1)
insert @t2 values (2,0)
insert @t2 values (3,0)
insert @t2 values (3,0)
insert @t2 values (4,1)

select t1.f1
from @t1 t1, @t2 t2
where (t1.f1 = t2.f1)
  and (t1.f2 = 1)
  and (t2.f2 = 0)

--------

select f1
from @t1
where f1 in
          (select f1
           from @t2
           where f2 = 0)
  and f2 = 1
7 сен 12, 14:53    [13130365]     Ответить | Цитировать Сообщить модератору
 Re: При выборке из разных таблиц лучше использовать сопоставления или вложенный запрос?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 428
iap,

гг,
об этом я не подумал)

спасибо!)
7 сен 12, 15:02    [13130442]     Ответить | Цитировать Сообщить модератору
 Re: При выборке из разных таблиц лучше использовать сопоставления или вложенный запрос?  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 428
просто в моем случае это невозможно, но все же...
7 сен 12, 15:12    [13130535]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить