Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
PlanB Member Откуда: Moscow Сообщений: 2762 |
Добрый день! запрос, вроде как, рабочий. но, у меня ощущение, что сделал я далеко не оптимально. три таблицы, как мне кажется, нельзя запихивать в FROMselect a.regn as 'регномер', sum(a.iitg) as 'чистые активы', b.c3 as 'капитал', c.oitga as 'дневной оборот', a.dt as 'дата' from dbo.[122012b1] a, dbo.[122012_134d] b, dbo.[122012b1] c where a.regn=b.regn and a.regn = c.regn and b.c1 in ('000') and (left(a.num_sc,1) in ('1', '2', '3', '4', '5') and (a.a_p = '1')) and c.num_sc in ('30102') group by a.regn, a.dt, b.c3, c.oitga order by 1 Спасибо!
|
|
4 апр 13, 15:56 [14136496] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
select a.regn as [регномер], sum(a.iitg) as [чистые активы], b.c3 as [капитал], c.oitga as [дневной оборот], a.dt as [дата] from dbo.[122012b1] a join dbo.[122012_134d] b on a.regn=b.regn join dbo.[122012b1] c on a.regn = c.regn where b.c1='000' and a.num_sc like'[12345]%' and a.a_p='1' and c.num_sc='30102' group by a.regn, a.dt, b.c3, c.oitga order by [регномер]; |
4 апр 13, 16:05 [14136549] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
а что не так-то? вроде обычный запрос...select a.regn as 'регномер', sum(a.iitg) as 'чистые активы', b.c3 as 'капитал', c.oitga as 'дневной оборот', a.dt as 'дата' from dbo.[122012b1] a join dbo.[122012_134d] b on b.regn=a.regn and b.c1 ='000' join dbo.[122012b1] c on c.regn=a.regn and c.num_sc ='30102' where a.a_p = '1' and a.num_sc like '[1-5]%' group by a.regn, a.dt, b.c3, c.oitga order by 1 |
4 апр 13, 16:08 [14136565] Ответить | Цитировать Сообщить модератору |
PlanB Member Откуда: Moscow Сообщений: 2762 |
>>а что не так-то? вроде обычный запрос... прекрасно, если все так. Спасибо за помощь! |
4 апр 13, 16:22 [14136667] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Это вы не видели запросов, где во FROM запихнуто двадцать три таблицы ![]() |
||
4 апр 13, 16:37 [14136758] Ответить | Цитировать Сообщить модератору |
PlanB Member Откуда: Moscow Сообщений: 2762 |
PS все хочу на курсы по sql записаться, да никак руки не дойдут. |
||||
5 апр 13, 08:45 [14138535] Ответить | Цитировать Сообщить модератору |
wizli Member Откуда: Minsk Сообщений: 270 |
PlanB, Запрос заработал быстрее не потому что вы пришли к join, для join и простого перечисления таблиц оптимизатор построит одинаковые планы запроса. Запрос стал работать быстрее так как ваше условие было значительно упрощено. |
5 апр 13, 09:52 [14138698] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
А, вы имели в виду "таблицы во FROM, перечисленные через запятую". Как уже сказали, семантически это не отличается от "таблиц, соединённых через JOIN". Синтаксис с JOIN правильнее тем, что его легче читать — скажем, в том же "запросе из двадцати таблиц" — когда мы видим во FROM очередную таблицу, то рядом с ней видим условия соединения, можно всё прочесть последовательно. При чтении запроса с запятыми — видим во FROM очередную таблицу, прыгаем взглядом в WHERE, там из нескольких десятков условий кое-как находим условия соединения, снова переносим взгляд во FROM и так далее. |
||
5 апр 13, 10:31 [14138824] Ответить | Цитировать Сообщить модератору |
PlanB Member Откуда: Moscow Сообщений: 2762 |
спасибо за науку! |
5 апр 13, 11:28 [14139184] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |