Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Вопрос по left join


Автор: yezh 6.2.2008, 14:57
Нужно присоединить таблицу слева. Но при этом на нее накладываются некоторые условия. Примерно так:
выбираем все записи из t1. Присоединяем слева таблицу t2. При этом должны выполниться условия что t2.p1 = t3.p2, t3.p2=10, t3 и t1 никак не связаны. соответственно услвие для связи t1 и t2 есть.
Как мне в left join приписать еще одну таблицу? 
пробовал такой код:
Код

select t1.p1, t1.p2 ... t1.p10, t2.p1 
from t1 left join t2, t3 on t1.p1 = t2.p5 and t2.p1=t3.p2 and t3.p1 = 10 
where ...

Не работает  smile 
Может подскажете как сделать?

Автор: geckelberryfinn 6.2.2008, 15:27
а нельзя вот так
Код

select t1.p1, t1.p2 ... t1.p10, t2.p1 
from (t1 left join t2 on  t1.p1 = t2.p5) inner join t3 on t2.p1=t3.p2 and t3.p1 = 10 
where ...


Возможно придется привести к типу - таблица... щас уже точно не соображу, но логика такая


Автор: yezh 6.2.2008, 15:40
Хмм... ошибок не выдает но работает как то странно. Лан, может условия не те, это уже потом буду смотреть... а если добавить еще одну таблицу, которая тоже будет связываться с t2? А-ля:
Код

 t2.p1 = t3.p2, t3.p2=10, t4.p1 = t2.p3

и при этом t2,t3 и t1 между собой никак не связаны?

Добавлено через 54 секунды
Просто добавляется еще один INNER JOIN?

Автор: Akina 6.2.2008, 15:42
t3.p1 = 10 - явно для секции WHERE

Добавлено через 1 минуту и 39 секунд
а вообще 

Код

from t1 left join (t2 join t3 on t2.p1=t3.p2 and t3.p1 = 10) on t1.p1 = t2.p5 


Автор: yezh 6.2.2008, 15:57
Спасиб, разобрался. Второй вариант заработал нормально вроде бы...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)