2010-11-23 2 views
1

Я хочу сделать несколько внешних соединений на столе с тремя другими. Соединение является niddeclaration. Цель состоит в том, чтобы получить декларацию со всем, что связано с ней в моей схеме. Существующий код сделал одно внешнее соединение со старым синтаксисом: где A.x = B.x (+). «Новый» синтаксис, оставленный внешним соединением, похоже, делает то же самое. Моя проблема заключается в том, чтобы использовать его несколько раз в том же запросе. Похоже, что я не могу использовать уникальный идентификатор объявления d, поэтому я использую 3 разных варианта, чтобы делать одно и то же, а не одно.Несколько внешних соединений в одном запросе

select * 
    FROM entreprise e, 
     calendrier m, 
     statut s, 
     lignedeclaration l, 
     categoriedeclaration c, 
     declaration d left OUTER JOIN saisiecategoriedeclaration sc on d.niddeclaration = sc.niddeclaration , 
     declaration de left OUTER JOIN saisielignedeclaration sl on de.niddeclaration = sl.niddeclaration, 
     declaration dl left OUTER JOIN reglement r on dl.niddeclaration = r.niddeclaration 
WHERE (d.nidentreprise = e.nidentreprise) 
    AND d.niddeclaration = 12314689 
    and de.niddeclaration = 12314689 
    and dl.niddeclaration = 12314689; 

Вкратце я хочу сделать 2 нормальных соединения и 3 внешних соединения в том же запросе. С 3 внешним соединением с той же «левой» таблицей.

+1

Пожалуйста, перефразируйте свой вопрос и повторите запрос, это совершенно неясно. – 2010-11-23 18:09:59

+0

В вашем запросе отсутствуют критерии JOIN для таблиц CALENDRIER, STATUT, LIGNEDECLARATION и CATEGORIEDECLARATION. – 2010-11-23 18:46:38

ответ

4

Вам не нужно повторно включать declaration.

declaration d 
left OUTER JOIN saisiecategoriedeclaration sc on d.niddeclaration = sc.niddeclaration 
left OUTER JOIN saisielignedeclaration sl on d.niddeclaration = sl.niddeclaration 
left OUTER JOIN reglement r on d.niddeclaration = r.niddeclaration 

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

Смежные вопросы