SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.11.2011 08:59:05

stasuss
Участник
Зарегистрирован: 30.11.2011
Сообщений: 10

условный JOIN

Всем привет.

у меня в базе данных есть три таблицы. С помощью следующего представления происходит запрос и выдача результатов из трех таблиц:


SELECT `kad_num`.`NORMKADN` AS `NORMKADN`
     , `kad_num`.`KADN` AS `KADN`
     , `registration`.`VIDPRAVA_2` AS `VIDPRAVA_2`
     , `registration`.`VIDPRAVA` AS `VIDPRAVA`
     , `registration`.`enc_start` AS `enc_start`
     , `registration`.`enc_stop` AS `enc_stop`
     , `reg_users`.`TIPLITSA` AS `TIPLITSA`
     , `reg_users`.`FAMNAZORG` AS `FAMNAZORG`
     , `reg_users`.`IMYA` AS `IMYA`
     , `reg_users`.`OTCHESTVO` AS `OTCHESTVO`
     , `reg_users`.`DATAROGDREG` AS `DATAROGDREG`
     , `reg_users`.`SERIYA` AS `SERIYA`
     , `reg_users`.`NOMER` AS `NOMER`
     , `reg_users`.`DATAVYDACHY` AS `DATAVYDACHY`
     , `reg_users`.`ORGVYDDOC` AS `ORGVYDDOC`
     , `reg_users`.`OPF` AS `OPF`
     , `reg_users`.`INN` AS `INN`
     , `reg_users`.`KPP` AS `KPP`
     , `reg_users`.`OGRN` AS `OGRN`
     , `reg_users`.`FACTADRESS` AS `FACTADRESS`
     , `registration`.`Dolya` AS `Dolya`
     , `registration`.`NOMERREG` AS `NOMERREG`
     , `registration`.`DATAOPEN` AS `DATAOPEN`
     , `registration`.`DATACLOSE` AS `DATACLOSE`
     , `reg_users`.`XML` AS `XML`
FROM
  ((`kad_num`
JOIN `registration`
ON ((`kad_num`.`Object_id` = `registration`.`Object_id`)))
JOIN `reg_users`
ON ((`registration`.`Id` = `reg_users`.`id`)))
 


все здорово, но возникла ситуация когда в третьей таблице нет соответствующих записей для JOIN, и нужно вывести результаты только соединяя первые две таблицы. попробовал IF и CASE но не совсем разобрался наверное в синтаксисе, потому что получал ошибки синтаксические при выполнении запроса.

ПОЖАЛУСТА скажите реально ли одним запросом вообще делать выборку либо из трех таблиц либо из двух в зависимости от наличия данных? и если реально, ткните хотя бы в примерчик..

заранее спасибо

Неактивен

 

#2 30.11.2011 10:35:31

stasuss
Участник
Зарегистрирован: 30.11.2011
Сообщений: 10

Re: условный JOIN

вообщем оказалось все решаемо с помощью


FROM
  ((`kad_num`
JOIN `registration`
ON ((`kad_num`.`Object_id` = `registration`.`Object_id`)))
LEFT JOIN `reg_users`
ON ((`registration`.`Id` = `reg_users`.`id`)))
 


если есть еще варианты, напишите пожалуйста, для саморазвития общественности)

Неактивен

 

#3 30.11.2011 14:19:09

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: условный JOIN

Других вариантов вроде нет smile LEFT или RIGHT JOIN решают данную проблему.


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson