Страница 1 из 1

Вопрос про LEFT JOIN и попытку избавиться от него

Добавлено: 13 фев 2008, 08:55
Kotъ-Begemotъ
А вот я тут подумал на такую тему:
Есть запрос с объединением по JOIN. К двум таблицам. Поле из второй таблицы, фигурирующее в выборке может быть NULL. То есть в выборку не попадёт если только LEFT JOIN не задать. То есть:

Код: Выделить всё

SELECT UN.UNITID, UN.UNITNAME, OD.FLAT
FROM UNITS UN
 LEFT JOIN ORDERS OD
  ON (OD.DRIVERID = UN.UNITID)
Квартира не обязательно задана, может быть без неё. Поэтому чтобы получить полные данные ставим LEFT JOIN Пример надуманный, для простоты.

Но с другой стороны что будет если сделать вот так:

Код: Выделить всё

SELECT UN.UNITID, UN.UNITNAME, COALESCE(OD.FLAT, 'НЕТУ_НИФИГА')
FROM UNITS UN
 JOIN ORDERS OD
  ON (OD.DRIVERID = UN.UNITID)
?!? Как это будет работать? Запрос к реальным данным делал - что-то не понял нифига - количество записей меньше чем в первом запросе, но с другой стороны присутствуют строки с "НЕТУ_НИФИГА" ?!? При такой конструкции будут "теряться" записи или нет? Это я к тому, что может в подобных случаях удастся таким "финтом" избавится от LEFT JOIN в пользу внутреннего JOIN ?

Добавлено: 13 фев 2008, 09:50
kdv
ты все-таки не читал www.ibase.ru/devinfo/joins.htm

Re: Вопрос про LEFT JOIN и попытку избавиться от него

Добавлено: 13 фев 2008, 14:45
WildSery
Букварь, срочно!