Главная страница
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.013 c
3-55986
Picco
2002-09-25 14:59
2002.10.17
Временные таблицы


1-56220
^Sanya
2002-10-07 15:25
2002.10.17
XOR-алгоритм шифрования


7-56356
Jedak
2002-08-08 13:42
2002.10.17
Как узнать, висит ли Excel в задачах?


1-56197
nika_ufc
2002-10-06 14:23
2002.10.17
Помагите


14-56324
Best Before 2024
2002-09-24 15:14
2002.10.17
Софт для гостиниц