Hello, lvv!

[EMAIL PROTECTED] wrote:

Обычный запрос с left outer join:
select
  dt.id,
  dt.id_master,
  dt.name
from
  DETAIL_TABLE dt LEFT OUTER JOIN MASTER_TABLE mt
    on dt.id_master = mt.id
where
  mt.status = 1
order by dt.id_master, id

прочитай www.ibase.ru/devinfo/joins.htm

условием where ты УБИЛ всю LEFT таблицу, для
которой НЕТ записей в MT, то бишь mt.status is null.

    select id
    from MASTER_TABLE mt
    where
      mt.status = 1

это другой запрос. как
on dt.id_master = mt.id and mt.status = 1
order by ...

в общем, читай статью. похоже ты еще недопонимаешь left/right join

тоже возвращает все строки из DETAIL_TABLE.

Вопрос: это так и должно быть или это
ошибка?

left/right join собственно и нужен, чтобы получать
из left/right таблицы те строки, для которых нет соответствия
в условии join.

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34


Ответить