Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Чей то торможу с запросом помогите pls.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Чей то торможу с запросом Есть табличка 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 а как быть с двумя не пойму, может кто подскажет чего С уважением, Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2002, 07:56 |
|
||
|
Чей то торможу с запросом помогите pls.
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2002, 08:29 |
|
||
|
Чей то торможу с запросом помогите pls.
|
|||
|---|---|---|---|
|
#18+
2 Glory Вот вот, так и у меня сейчас, но проблема в письме Нваерное при расчете разделю результаты для t1 и t2 во временные таблицы а при выводе солью и посмотрю что с быстроедействием получится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2002, 08:36 |
|
||
|
Чей то торможу с запросом помогите pls.
|
|||
|---|---|---|---|
|
#18+
А так 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2002, 08:44 |
|
||
|
Чей то торможу с запросом помогите pls.
|
|||
|---|---|---|---|
|
#18+
2 Glory Да получилось быстрее 7 сек против 18, и оптимизатор не грохнулся, как в случае с подзапросами. Спасибо. сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2002, 10:40 |
|
||
|
Чей то торможу с запросом помогите pls.
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2002, 11:06 |
|
||
|
Чей то торможу с запросом помогите pls.
|
|||
|---|---|---|---|
|
#18+
2 Владимир Смирнов Не так нельзя, по первому джойну посчитает корректно а по второму будет ошибка если есть пересечения по ID. Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2002, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3517&tid=1824408]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 335ms |

| 0 / 0 |
