Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
select count(1) over() SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 08:55 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshaselect count(1) over() SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID; меня интересует вот эта строчка: select count(1) over() SESSION_COUNT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 08:56 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
alosha aloshaselect count(1) over() SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID; меня интересует вот эта строчка: select count(1) over() SESSION_COUNT В PostgreSQL нет аналитического SQL, поэтому замени count(1) over() на скалярный подзапрос к таблице LOGGED_SESSION с count(distinct USER_ID) и таким же WHERE-clause, как и у основного запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 09:02 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Бабичев Сергей alosha aloshaselect count(1) over() SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID; меня интересует вот эта строчка: select count(1) over() SESSION_COUNT В PostgreSQL нет аналитического SQL, поэтому замени count(1) over() на скалярный подзапрос к таблице LOGGED_SESSION с count(distinct USER_ID) и таким же WHERE-clause, как и у основного запроса. можешь написать как это будет выглядить? Не могу понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 09:03 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshaможешь написать как это будет выглядить? Не могу понять.А чего тут понимать-то? Что ли не можешь заменить count(1) over() на count(distinct USER_ID) и убрать GROUP BY из своего запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 09:39 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Бабичев Сергей aloshaможешь написать как это будет выглядить? Не могу понять.А чего тут понимать-то? Что ли не можешь заменить count(1) over() на count(distinct USER_ID) и убрать GROUP BY из своего запроса? Так можно? select count(*) as SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 09:53 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshaТак можно? select count(*) as SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID;Я же тебе сказал - GROUP BY нужно нафиг выкинуть. А вообще, ты лучше на словах научись формулировать свои мысли, а не кусками кода их демострировать. Вообще говоря, что бы получить запрос, совершенно эквивалентный твоему запрос по получаемому результату, то его нужно вот так написать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:08 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Бабичев Сергей aloshaТак можно? select count(*) as SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID;Я же тебе сказал - GROUP BY нужно нафиг выкинуть. А вообще, ты лучше на словах научись формулировать свои мысли, а не кусками кода их демострировать. Вообще говоря, что бы получить запрос, совершенно эквивалентный твоему запрос по получаемому результату, то его нужно вот так написать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Ну смотри. Первый подзапрос выведет число count(distinct USER_ID). Потом ето число запишется в v_Result. В чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:15 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshaНу смотри. Первый подзапрос выведет число count(distinct USER_ID). Потом ето число запишется в v_Result. В чем проблема?Да я-то смотрю. Вот ты привел изначально пример из Oracle. Но на Oracle такой пример не будет работать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:26 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Функция на Оракле выглядт вот так function getSessionsCountCntByFilter( pUSER_TYPE LOGGED_SESSION.USER_TYPE%TYPE, pLOGIN_DATE_FROM LOGGED_SESSION.LOGIN_DATE%TYPE, pLOGIN_DATE_TO LOGGED_SESSION.LOGIN_DATE%TYPE, pUSER_TABLE STRING_TABLE default NULL ) return NUMBER is v_Result NUMBER; begin if (pUSER_TABLE is null) then select count(1) over() SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID; else select count(1) over() SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO and USER_ID in (select column_value from table(cast(pUSER_TABLE as STRING_TABLE))) group by USER_ID; end if; return v_Result; exception when NO_DATA_FOUND then return 0; when TOO_MANY_ROWS then return v_Result; end; М не надо ее переделать на PostgreSQL. Она на Оракле работает. Я вот не пойму зачем ты делаешь двойной запрос: select ( select count(distinct USER_ID) from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO ) into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID; Нельзя ли просто написать вместо всего следующее выражение? Что не правильно?: select count(*) as SESSION_COUNT into v_Result from LOGGED_SESSION where USER_TYPE = pUSER_TYPE and LOGIN_DATE >= pLOGIN_DATE_FROM and LOGIN_DATE <= pLOGIN_DATE_TO group by USER_ID; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:34 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshaЯ вот не пойму зачем ты делаешь двойной запрос:Выполни оба запроса (пока ещё просто запроса, не надо пихать их в функцию) на наборе данных, в котором более одного USER_ID, найди N-отличий... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:38 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Бабичев Сергей aloshaЯ вот не пойму зачем ты делаешь двойной запрос:Выполни оба запроса (пока ещё просто запроса, не надо пихать их в функцию) на наборе данных, в котором более одного USER_ID, найди N-отличий... Слушай, у меня к тебе еще один вопрос. Видишь в функции есть exception? Это можно как нибудь переделать на PostgreSQL? У тебя ICQ работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:40 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
По сути - она коряво реализована и в оракле. Не вижу смысла переводить эту корявость в постгре. Кстати, исключение NO_DATA_FOUND в этой функции вообще никогда не возникнет, поэтому смысл его перехвата и обработки лично мне совершенно непонятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:52 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Бабичев СергейПо сути - она коряво реализована и в оракле. Не вижу смысла переводить эту корявость в постгре. Кстати, исключение NO_DATA_FOUND в этой функции вообще никогда не возникнет, поэтому смысл его перехвата и обработки лично мне совершенно непонятен. А другое исключение сработать же может? Как его переделать не знаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:55 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Бабичев СергейПо сути - она коряво реализована и в оракле. Не вижу смысла переводить эту корявость в постгре. Кстати, исключение NO_DATA_FOUND в этой функции вообще никогда не возникнет, поэтому смысл его перехвата и обработки лично мне совершенно непонятен.Пардон, таки оно будет возникать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:55 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshaКак его переделать не знаешь?Подумай над тем, что делает эта функция. И тебе всё станет ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 10:58 |
|
||
|
Как переписать это с Oракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Бабичев Сергей aloshaКак его переделать не знаешь?Подумай над тем, что делает эта функция. И тебе всё станет ясно. спасибо большое , буду разбираться сидеть :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=2005695]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 352ms |

| 0 / 0 |
