Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
14-1123228858
boriskb
2005-08-05 12:00
2005.08.28
С кем бы вы хотели поговорить?


3-1121768336
integery
2005-07-19 14:18
2005.08.28
Как вставить в таблицу значение Id из справочников ?


3-1121182830
xoot
2005-07-12 19:40
2005.08.28
Установка базы данных


3-1121176529
redlord
2005-07-12 17:55
2005.08.28
создание базы данных для конкретной задачи


3-1121057544
mmms
2005-07-11 08:52
2005.08.28
Господа, как можно "привязать" к TTreeNode номер записи