Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.17;
Скачать: CL | DM;

Вниз

SQL заморочка   Найти похожие ветки 

 
ALexe   (2002-09-25 10:22) [0]

имеем три таблицы:
1. Table1
id1 integer
name string
2. Table2
id2 integer
name string
3. Table3
id3 <- содержит id1 или id2
ido 0/1
Как можно получить в SQL получить
"name" из Table1 при id0=0 и
"name" из Table2 при id0=1 ?

.. или при помощи хранимой процедуры в InterBase6 ?

заранее благодарен .. Алексей ;-)


 
passm ©   (2002-09-25 10:34) [1]

SELECT T3.ID3, T1.NAME, T2.NAME
FROM TABLE3 T3
LEFT OUTER JOIN TABLE1 T1 ON (T3.ID3 = T1.ID1 AND T3.ID0 = 0)
LEFT OUTER JOIN TABLE2 T2 ON (T3.ID3 = T2.ID2 AND T3.ID0 = 1)
Если я правильно тебя понял.


 
ALexe   (2002-09-25 10:44) [2]

немного не то - надо получить одно поле Name

это можно сделать не красиво:
SELECT T3.*, T1.NAME
FROM TABLE3 T3
LEFT OUTER JOIN TABLE1 T1 ON (T3.ID3 = T1.ID1 AND T3.ID0 = 0)
UNION
SELECT T3.*, T2.NAME
FROM TABLE3 T3
LEFT OUTER JOIN TABLE2 T2 ON (T3.ID3 = T2.ID2 AND T3.ID0 = 1)

а как еще ?


 
passm ©   (2002-09-25 10:54) [3]

Есть ли в IB функция типа COALESCE(VALUE1, VALUE2) которая возвращает VALUE1 если VALUE1 IS NOT NULL; в противном случае VALUE2? Если нет то можно написать UDF самому.
P. S. Просто ей можно восспользоваться в запросе указанном <passm © (25.09.02 10:34)>. Да и вообще вещь полезная.


 
ALexe   (2002-09-25 11:05) [4]

спасибо за идею - решение оказывается лежит под носом!!!
СПАСИБО


 
Johnmen ©   (2002-09-25 11:07) [5]

SELECT T3.id3, T3.ido,
(SELECT T1.name FROM Table1 T1
WHERE (T1.id1=T3.id3) AND (T3.ido=0)) AS F1,
(SELECT T2.name FROM Table2 T2
WHERE (T2.id2=T3.id3) AND (T3.ido=1)) AS F2
FROM Table3 T3


 
ALexe   (2002-09-25 11:43) [6]

красиво но не то - результирующее поле NAME надо одно !!!
спасибо


 
Johnmen ©   (2002-09-25 11:55) [7]

SELECT T3.id3, T3.ido,
(SELECT T1.name FROM Table1 T1
WHERE (T1.id1=T3.id3) AND (T3.ido=0)) AS F1
FROM Table3 T3
UNION
SELECT T3.id3, T3.ido,
(SELECT T2.name FROM Table2 T2
WHERE (T2.id2=T3.id3) AND (T3.ido=1)) AS F1
FROM Table3 T3


 
ALexe   (2002-09-25 11:58) [8]

я так и сделал ;-)))



Страницы: 1 вся ветка

Текущий архив: 2002.10.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
3-56001
brestmarket
2002-09-26 15:42
2002.10.17
Есть компонент QuantumGrid - как вставить туда данные ADOQuery?


3-55935
BlackTiger
2002-09-24 21:17
2002.10.17
Во где грабли... ADOConnection.ConnectionString.


8-56234
Konstantin_
2002-06-16 18:28
2002.10.17
Создание WAV файла


7-56362
Juve
2002-08-03 15:48
2002.10.17
Проблемы с LPT


14-56323
RV
2002-09-25 04:16
2002.10.17
Вот в Москве 15 часов, а на Камчатке полночь. Сейчас в Москве