powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Чей то торможу с запросом помогите pls.
8 сообщений из 8, страница 1 из 1
Чей то торможу с запросом помогите pls.
    #32020272
SergD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Чей то торможу с запросом
Есть табличка t список (ID) - ID уникально
Есть вторая табличка t1(ID,SumCur), где могут встречаться некоторые ID из t,но не все, с суммами (ID могут встречаться и не один раз)
и третья таблица t2 аналогичная t1
и вот очень хочется получить результат
r( ID, SumCurID_from_t1, SumCurID_from_t2) где присутствуют все ID из t и суммы по этим ID из t1 и t2 соответственно
одним запросом или эквивалент из нескольких но с приемлемой скоростью.

Объясню ситуацию
подобный запрос генерируется в execSQL - это очень длинная SQL строка (для тех кто понимает: это обороты по счету в разрезе сабконта с корреспондирующими счетами т.е колонок для корреспондирующих счетов генерируется очень много)

вариант с подзапросом работает слишком медленно и в моем случае при боле мене сложных выборках сервер выдает ошибку:
"Could not allocate ancillary table for query optimization. Maximum number of tables in a query (256) exceeded."

вот есле бы была одна таблица t1 то все замечательно
select ID,Sum(isNUll(SumCur,0)) from t,t1 where
t.ID*=t1.ID
group by t.ID
а как быть с двумя не пойму, может кто подскажет чего
С уважением, Сергей.
...
Рейтинг: 0 / 0
Чей то торможу с запросом помогите pls.
    #32020276
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select ID,
(SELECT Sum(SumCur) FROM t1 WHERE t1.id=t.id) AS SumCurID_from_t1,
(SELECT Sum(SumCur) FROM t2 WHERE t2.id=t.id) AS SumCurID_from_t2
from t
...
Рейтинг: 0 / 0
Чей то торможу с запросом помогите pls.
    #32020277
SergD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Glory
Вот вот, так и у меня сейчас, но проблема в письме
Нваерное при расчете разделю результаты для t1 и t2 во временные таблицы а при выводе солью
и посмотрю что с быстроедействием получится
...
Рейтинг: 0 / 0
Чей то торможу с запросом помогите pls.
    #32020278
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так

select ID, Sum(isNUll(SumCur_from_t1,0)) AS SumCurID_from_t1, Sum(isNUll(SumCur_from_t2,0)) AS SumCurID_from_t2
from t
left outer join
(SELECT t1.id, t1.SumCur AS SumCur_from_t1, 0 AS SumCur_from_t2 FROM t1
UNION ALL
SELECT t2.id, 0 AS SumCur_from_t1, t2.SumCur AS SumCur_from_t2 FROM t2
) AS a ON a.id = t.id
GROUP BY t.id
...
Рейтинг: 0 / 0
Чей то торможу с запросом помогите pls.
    #32020293
SergD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Glory
Да получилось быстрее 7 сек против 18, и оптимизатор не грохнулся, как в случае с подзапросами.
Спасибо.
сергей.
...
Рейтинг: 0 / 0
Чей то торможу с запросом помогите pls.
    #32020296
Владимир Смирнов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT t.ID, SUM(IsNull(t1.SumCur, 0)) as S1, SUM(IsNull(t2.SumCur, 0)) as S2
FROM t
LEFT JOIN t1 ON t.ID = t1.ID
LEFT JOIN t2 ON t.ID = t2.ID
GROUP BY t.ID
...
Рейтинг: 0 / 0
Чей то торможу с запросом помогите pls.
    #32020299
SergD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Владимир Смирнов
Не так нельзя, по первому джойну посчитает корректно а по второму будет ошибка если есть пересечения по ID.
Сергей.
...
Рейтинг: 0 / 0
Чей то торможу с запросом помогите pls.
    #32020302
Владимир Смирнов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для SergD.
Да, Вы правы, погорячился.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Чей то торможу с запросом помогите pls.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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