Главная страница
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.017 c
6-56265
Vahmurka
2002-08-16 11:24
2002.10.17
Как соединить два компа по LPT порту?


1-56048
FireWorks
2002-10-08 13:00
2002.10.17
Узнать, кто - нибудь пользуется файлами из расшареной папки


14-56344
Anatoly Podgoretsky
2002-09-21 01:51
2002.10.17
Memory SDK


3-55932
Bishop
2002-09-18 20:32
2002.10.17
Глюк грида


8-56238
:: Joiro [unregistered] ::
2002-06-12 13:23
2002.10.17
Создания кликуемых регионов.