Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Вниз

При объединении двух таблиц в запросе с одной надо выбрать все за   Найти похожие ветки 

 
Sanich ©   (2005-07-13 15:54) [0]

Такая проблема. БД - Firebird 1.0.
Кто знает, как при объдинении двух таблиц в запросе по ключу, сделать так, чтобы с одной таблицы выбрались еще и все записи, что не имеют совпадений по ключу со второй.
Буду очень благодарен за ответ.


 
Johnmen ©   (2005-07-13 15:58) [1]

См. документацию на SQL. В частности виды соединений (JOIN).


 
Sanich ©   (2005-07-13 16:04) [2]

Да смотрел я. В одной книге что-то написано про кнструкцию вида table1.key*=table2.key но в FireBird она не работает. А другой нету. Может знаете где взять можно?


 
Desdechado ©   (2005-07-13 16:04) [3]

точнее OUTER JOIN


 
Johnmen ©   (2005-07-13 16:09) [4]

>Может знаете где взять можно?

В Интернете.


 
Sanich ©   (2005-07-13 16:51) [5]

На форму ibase.ru дали ссылку на статью, в которой все очень хорошо написано. http://www.ibase.ru/devinfo/joins.htm


 
msguns ©   (2005-07-13 17:24) [6]

Вместо
From T1,T2 Where T1.ID=T2.ID
надо
From T1 Left Join T2 ON (T1.ID=T2.ID)

Если я правильно понял сабж


 
Desdechado ©   (2005-07-13 17:39) [7]

[6]
нет, неверно, ибо JOIN - это INNER JOIN, а не OUTER JOIN


 
Johnmen ©   (2005-07-13 17:42) [8]

>Desdechado ©   (13.07.05 17:39) [7]

Нет, неверно, ибо там LEFT, а он, как известно, разновидность внешнего (OUTER ) соединения.


 
Alex_Bredin ©   (2005-07-13 17:51) [9]


> Johnmen ©   (13.07.05 17:42) [8]


нет, неверно ))
по умолч -INNER


 
Stakan ©   (2005-07-13 17:53) [10]

Alex_Bredin ©   (13.07.05 17:51) [9]
Нет неверно,
если есть LEFT, значит это OUTER


 
Johnmen ©   (2005-07-13 17:55) [11]

>Stakan ©   (13.07.05 17:53) [10]

Совершенно верно.


 
Desdechado ©   (2005-07-13 18:18) [12]

Johnmen ©   (13.07.05 17:42) [8]
да, согласен
просто я на умолчания не полагаюсь, всегда пишу LEFT OUTER JOIN, тогда никаких разночтений


 
evvcom ©   (2005-07-14 10:02) [13]


> просто я на умолчания не полагаюсь

Это не умолчания. LEFT, RIGHT, FULL JOIN - это все OUTER. А употребление OUTER только для наглядности. Вот если бы существовала конструкция LEFT INNER JOIN, тогда были бы умолчания, а так нет.


 
Johnmen ©   (2005-07-14 10:08) [14]

[INNER] JOIN | {LEFT | RIGHT | FULL } [OUTER]} JOIN
вот и все дела...


 
Desdechado ©   (2005-07-14 12:25) [15]

2 evvcom
только не надо буквоедства
для меня, например, LEFT INNER JOIN звучит вполне естественно
и отсутствие ее в стандарте не отрицает возможности ее появления там


 
ЮЮ ©   (2005-07-14 12:34) [16]

>LEFT INNER JOIN звучит вполне естественно

и что такая комбинация LEFT + INNER для тебя означает?


 
TAN_K   (2005-07-14 13:58) [17]

елала представление , запрос делать аналогично . Попробуй .
CREATE VIEW VW_LKART(
   GODR,
   MES,
   DEN,
   NOM_CEX,
   NAIM18,
   NAIM,
   NAIM1,
   NAIM2,
   NAIM3,
   NAIM4,
   NAIM5,
   NAIM6,
   RODST,
   VOINP,
   PENS,
   NAIM16,
   DAT_UV,
   MODEL,
   NAIM17,
   PRIM,
   NAIM19,
   KOD_CEX,
   KOD_KAT,
   KOD_PROF,
   KOD_USL,
   KOD_RAZR,
   KOD_OBR,
   KOD)
AS
select
   LK.GODR,
   LK.MES,
   LK.DEN,
   pod.nom_cex,
   pod.naim,
   kat.naim,
   pro.naim1,
   pro.naim2,
   pro.naim3,
   usl.naim,
   raz.naim,
   LK.RODST,
   LK.VOINP,
   LK.PENS,
   RAB.naim,
   LK.DAT_UV,
   STA.model,
   STA.naim,
   lk.prim,
   str1.naim,
   LK.gragd,
   LK.K_GORR,
   LK.K_NASR,
   LK.K_OBLR,
   LK.K_RAIR,
   LK.KOD
/*                      */
from LKART  LK
left outer join NASP    NAS  on (LK.k_nasr   = NAS.kod)
left outer join REGION  REG  on (LK.k_oblr   = REG.kod)
left outer join RAION   RAI  on (LK.k_rair   = RAI.kod)
left outer join STRANA  STR  on (LK.k_stranr = STR.kod)
left outer join REGION  REG1 on (LK.kpr_obl  = REG1.kod)
left outer join GOROD   GOR1 on (LK.kpr_gor  = GOR1.kod)
left outer join NASP    NAS1 on (LK.kpr_nas  = NAS1.kod)
left outer join RAION   RAI1 on (LK.kpr_rai  = RAI1.kod)
left outer join ULICA   ULI1 on (LK.kpr_ul   = ULI1.kod)
left outer join RAI_GOR RAG  on (LK.k_raigor = RAG.kod)
left outer join REGION  REG2 on (LK.k_oblpr  = REG2.kod)
left outer join GOROD   GOR2 on (LK.k_gorpr  = GOR2.kod)
ж


 
Johnmen ©   (2005-07-14 14:08) [18]

>TAN_K   (14.07.05 13:58) [17]

"Что это, Берримор?" (с) А.К.Дойл

Это реальный запрос из реальных таблиц реальной БД ?
Охренеть... :)))


 
Desdechado ©   (2005-07-14 18:29) [19]

2 ЮЮ
просто внутреннее объединение, которое парсится слева

2 Johnmen
ты посмотри на исходники Оракловских вьюх, тогда охреневай :))
например, на sys.all_constraints


 
Johnmen ©   (2005-07-14 18:35) [20]

>Desdechado ©   (14.07.05 18:29) [19]

Это зависит от чего хренею я, а от чего ты. :))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.034 c
8-1113715157
dr Tr0jan
2005-04-17 09:19
2005.08.28
Построение дуги между двумя точками


3-1121810728
NickMan
2005-07-20 02:05
2005.08.28
ADOTable и DBGrid


3-1121319772
bsFrame
2005-07-14 09:42
2005.08.28
.edb - что это за база такая?


1-1123359237
mmms
2005-08-07 00:13
2005.08.28
Мышь над/вне компанентом(формой)


4-1117686064
Sir
2005-06-02 08:21
2005.08.28
Серийный номер видеокарты & материнской платы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский