Мне нужно добавить условие значения к ПОЛНОЙ ВНЕШНИМ СОЕДИНЕНИЕМ.FULL OUTER JOIN условие состояния
I.e. Я triyng сделать это:
SELECT *
FROM Table1
FULL OUTER JOIN Table2 ON Table1.Field1 = Table2.Field1 AND Table2.Field2 > 5
Но этот сценарий не работает. На самом деле это выглядит как условие (Table2.Field2> 5) никогда не применялось вообще.
Эта же проблема возникает для ПРАВИЛЬНОЙ ВСТРОЕННОЙ ВСТУПЛЕНИЯ, поэтому я думаю, что причина в том, что когда есть ПРАВО или ПОЛНОСТЬЮ, не присоединяются никакие условия значения, применяемые к правой таблице в соединении.
Почему это происходит? Существует ли концептуальное объяснение такого поведения?
И, конечно, главный вопрос заключается в том, как решить эту проблему.
Есть ли способ решить эту проблему без использования подзапросов?
SELECT *
FROM Table1
FULL OUTER JOIN (SELECT * FROM Table2 WHERE Table2.Field2 > 5) AS t2 ON Table1.Field1 = t2.Field1
Спасибо, но это еще не решение, которое я искал.Хотя этот подход сохраняет структуру запросов (критически для меня, потому что оператор SQL генерируется автоматически), поэтому это еще более подходящее решение, чем предыдущее. Еще много дополнительного кода, поэтому, возможно, мне пришлось реализовать подзапрос в конце. Но это решение достаточно хорошо, поэтому я думаю, что могу принять его в качестве ответа. – SergeyT