Главная страница
    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.006 c
7-56375
Sergserg
2002-07-26 12:57
2002.10.17
Иконки на форме


1-56092
dias
2002-10-08 20:15
2002.10.17
Нужна компонента аналогичная OpenDialog но работающая с каталогам


3-55953
Natangelina
2002-09-25 10:44
2002.10.17
dateTimePicker


14-56270
DeMoN-777
2002-09-23 02:43
2002.10.17
Киеьте пожалуйста значок D6 или D7


1-56167
Lony
2002-10-07 13:15
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский