Левое внешнее соединение — SQL2005

Я думал, что знаю достаточно SQL, но у меня проблема с левым внешним соединением.

У меня есть подробная запись о расходах, которая должна быть связана с таблицей по отделам и account_code.

Запрос выглядит примерно так:

SELECT Detail.Spend, Budget.BudgetAmt 
FROM detail left outer join budget 
    ON detail.dept = budget.dept 
    AND dept.account_code = budget.account_code

Это прекрасно работает, пока есть запись, которая точно соответствует условиям соединения. Но иногда нет соответствующей статьи бюджета. Я хочу вернуть Detail.Spend из таблицы сведений с нулями для BudgetAmt. Вместо этого я вообще не получаю эту запись.

Разве левое внешнее соединение не должно возвращать левую (подробную) таблицу, когда совпадений нет? Есть ли что-то другое, когда используется несколько критериев, как я делаю здесь?

Спасибо


person Dan beadle    schedule 31.03.2010    source источник
comment
Откуда dept.account_code в вашем примере? отдела нет в списке исходных таблиц?   -  person Sander Rijken    schedule 01.04.2010


Ответы (1)


Оператор LEFT JOIN должен вести себя так, как вы ожидаете. Является ли ваш пример всем запросом? Я спрашиваю, потому что иногда забываю, что добавление условия к объединенной таблице в предложении WHERE может вызвать эту проблему, если я не учитываю значения NULL.

person Daniel Pratt    schedule 31.03.2010