Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / help!!! / 5 сообщений из 5, страница 1 из 1
07.03.2006, 12:51
    #33586593
sucker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
help!!!
привет всем. столкнулся с проблемкой.

код:
Код: plaintext
1.
2.
select name from
      table1 left outer join(table2 natural join table3) on table1.ID = table2.ID

поевилась ище одна таблица table4. table2 и table4 между собой связанны по ID. в table4 есть поле table2_id (table2.ID = table4.table2_id так связанны).

надо
код:
Код: plaintext
1.
2.
select name from
      table1 left outer join(table2 natural join table3) on table1.ID = ISNULL(table4.ID, table2.ID) 

куда добавить table4? table2 natural join table3 и table2 key join table4.
как записать одним преложением? :(
...
Рейтинг: 0 / 0
07.03.2006, 14:04
    #33586880
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
help!!!
Во первых полное наименование сервера и версии. Во вторых структуру таблиц и связей в виде скрипта, так как из рассказа совершенно ничего не понятно.

P.S. Ну и в третьих - никогда не пользоваться NATURAL JOIN, так как соединение по похожим именам полей может привести к неожиданным результатам (например если у 2 таблиц одинаковые поля Name, то ... явно будет неожиданное соединение). Пользоваться можно только KEY JOIN - NATURAL JOIN сделан наверное больше для совместимости с Ораклом.
...
Рейтинг: 0 / 0
07.03.2006, 15:15
    #33587098
sucker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
help!!!
ASA9, 9.0.0.1270


TABLE1 (
TABLE1_ID integer NOT NULL,
NAME char(100) NOT NULL,
PRIMARY KEY ( "TABLE1_ID" )
);

TABLE2 (
TABLE2_ID integer NOT NULL,
TABLE2_TABLE1ID integer NULL,
NAME char(100) NOT NULL,
PRIMARY KEY ( "TABLE2_ID" )
);

//temporary
#TABLE3 (
TABLE2_ID integer NOT NULL,
NAME char(100) NOT NULL,
PRIMARY KEY ( "TABLE2_ID" )
);

TABLE4(
TABLE4_ID integer NOT NULL DEFAULT autoincrement,
TABLE4_TABLE2ID integer NULL,
NAME char(100) NOT NULL,
PRIMARY KEY ( TABLE4_ID )
);

//foreign keys

ALTER TABLE "DBA"."TABLE2" ADD FOREIGN KEY "FK_TABLE2_TABLE1" ( "TABLE2_TABLE1ID" ) REFERENCES "DBA"."TABLE1" ( "TABLE1_ID" ) ON UPDATE CASCADE;
ALTER TABLE "DBA"."TABLE4" ADD FOREIGN KEY "FK_TABLE4_TABLE2" ( "TABLE4_TABLE2ID" ) REFERENCES "DBA"."TABLE2" ( "TABLE2_ID" ) ON UPDATE CASCADE ON DELETE CASCADE;
...
Рейтинг: 0 / 0
07.03.2006, 16:17
    #33587256
sucker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
help!!!
надо чтобы резултат брали из table4, а если там значение NULL, то из table2
...
Рейтинг: 0 / 0
08.03.2006, 21:23
    #33588423
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
help!!!
Делаешь два LEFT JOIN на эти две таблицы, а потом в списке вывода с помошью isnull() или coalesce() выбираешь одну из двух таблиц.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / help!!! / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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