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

Откуда:
Сообщений: 3
есть запрос примерно такой
select t1.f1, t1.f2, t1.f3 from table1 as t1 where t1.f10_ID='blablabla' - результат одна строка всегда

следом нужен запрос примерно такой
select t2.f1,t2,f5,t2.f7 from table2 as t2 where t2.f4=t1.f1 and t2.f6>t1.f2 and t2.f7<=t1.f3

Понятно, что второй запрос работать не будет в таком синтаксисе. Как это все в одном запросе сделать? Т.е. во втором запросе использовать результаты первого.
можно конечно вместо t2.f4=t1.f1 писать конструкции t2.f4=(select t1.f1 from table1 as t1 where t1.f10_ID='blablabla'), затем t2.f6>(select t1.f2 from table1 as t1 where t1.f10_ID='blablabla'), но ведь это явно коряво как-то

заранее спасибо за помощь
31 май 12, 09:36    [12641409]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Прочитать про join.
31 май 12, 09:38    [12641415]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
kshell,
+
select  t2.f1
      , t2
      , f5
      , t2.f7
from    table2 as t2
inner join table1 as t1 on t1.f10_ID = 'blablabla'
                           and t2.f4 = t1.f1
                           and t2.f6 > t1.f2
                           and t2.f7 <= t1.f3
31 май 12, 09:41    [12641426]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Про соединения все отсюда и далее по дереву тынц
31 май 12, 09:53    [12641465]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
kshell
Member

Откуда:
Сообщений: 3
denis2710, спасибо большое, не знал что в inner join после on может быть несколько условий. Так все получилось
31 май 12, 09:54    [12641470]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
kshell
denis2710, спасибо большое, не знал что в inner join после on может быть несколько условий. Так все получилось

Еще столько же можно в where прописать :)
31 май 12, 11:21    [12642045]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
kshell
Member

Откуда:
Сообщений: 3
ЕвгенийВ, ну и как красиво написать этот запрос с where и без join?
31 май 12, 12:41    [12642815]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
ЕвгенийВ
Еще столько же можно в where прописать
Быдлокодерство.
31 май 12, 12:44    [12642845]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
pegoopik
Member

Откуда: Новосибирск
Сообщений: 54
kshell
ЕвгенийВ, ну и как красиво написать этот запрос с where и без join?

select  t2.f1
      , t2
      , f5
      , t2.f7
from    table2 as t2, table1 as t1 
where t1.f10_ID = 'blablabla'
          and t2.f4 = t1.f1
          and t2.f6 > t1.f2
          and t2.f7 <= t1.f3
31 май 12, 13:11    [12643122]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
pegoopik
kshell
ЕвгенийВ, ну и как красиво написать этот запрос с where и без join?

select  t2.f1
      , t2
      , f5
      , t2.f7
from    table2 as t2, table1 as t1 
where t1.f10_ID = 'blablabla'
          and t2.f4 = t1.f1
          and t2.f6 > t1.f2
          and t2.f7 <= t1.f3

Mnior
Быдлокодерство.
31 май 12, 13:13    [12643145]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
pegoopik
Member

Откуда: Новосибирск
Сообщений: 54
denis2710,

я спорю?:) я сам так не пишу. человек спросил я ответил.
хотя в данном случае не вижу в этом ничего криминального, для оптимизатора это одно и то же.
31 май 12, 13:20    [12643204]     Ответить | Цитировать Сообщить модератору
 Re: как правильно написать запрос?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
pegoopik
для оптимизатора это одно и то же
А причём вообще при писанине оптимизатор?
Никаким макаром он влиять на стиль изложения не должен. Савсэм.

"Криминальность" определяется читабельностью, поддерживаемостью/лёгкостью изменения.
Сделайте 100500 изменений чужёго кода и тогда быстро улетучатся всякие отмазки.
31 май 12, 15:33    [12644532]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить