Форум: "Базы";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c