Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
1-56091
HinderEvil
2002-10-07 19:30
2002.10.17
Как выполнить код из строки...


1-56203
MasterVovan
2002-10-07 18:56
2002.10.17
Как получить доступ из главной MDI формы к MDIChild.


6-56246
Ryser
2002-08-16 00:58
2002.10.17
ERangeError В чем может быть дело????


4-56409
Kons
2002-09-03 22:35
2002.10.17
Запретить удалять файлы


14-56268
Shadow
2002-09-22 18:59
2002.10.17
Хмммм............





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский