powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Запрос
3 сообщений из 3, страница 1 из 1
Запрос
    #33148811
tessa2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день !
Есть запрос, который будет работать в Оракле, но не работает в Sybase. Буду признательна, если мне кто-то смог бы помочь его перестроить, чтобы он заработал.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
INSERT INTO TGNUSER.USERPERMISSION 
(APP_ACTION_APPLICATION_ID, APP_ACTION_ID, TGN_USER_ID, PERMISSION)
 Select APPLICATION, ACTION, TGNUSER, 'F' 
from 
(SELECT T1.APPLICATION_ID APPLICATION,T1.ID ACTION,T2.ID TGNUSER 
FROM TGNUSER.APP_ACTION T1,TGNUSER.TGN_USER T2
WHERE T2.IS_CUSTOM_PERMISSION = 'T'
MINUS
Select APP_ACTION_APPLICATION_ID, APP_ACTION_ID, TGN_USER_ID  
from TGNUSER.USERPERMISSION Where APP_ACTION_ID is not null)
...
Рейтинг: 0 / 0
Запрос
    #33148970
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну во первых читаем первый топик, чтобы правильно задавать вопросы: http://www.sql.ru/forum/actualthread.aspx?tid=67261 .

По ASA могу сказать, что запрос заработает, если вместо MINUS написать EXCEPT. По ASE скорее всего его полностью придется переписывать, необходимо читать RTFM, чтобы понять поддерживает ли конкретная версия ASE подзапросы и переписывать логику запроса вместо MINUS.
...
Рейтинг: 0 / 0
Запрос
    #33149012
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASE (если это оно) не поддерживает MINUS - это конкретное "извращение" Оракла. Надо писать через нормальное вычитание ANSI SQL ( через NOT EXISTS)

Не все версии ASE поддерживают подзапросы во FROM.

Что-то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Select APPLICATION, ACTION, TGNUSER, 'F' 
FROM TGNUSER.APP_ACTION T1,
join TGNUSER.TGN_USER T2 on <не понял где условие JOIN-а>
WHERE T2.IS_CUSTOM_PERMISSION = 'T'
where not exists ( 
Select *   
from TGNUSER.USERPERMISSION 
Where APP_ACTION_ID is not null
APP_ACTION_APPLICATION_ID = T1.APPLICATION_ID 
....
)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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