(Вы не указали свой движок sql, поэтому я собираюсь сослаться на документацию по MySQL).
Это почти то же самое, для чего предназначена функция COALESCE()
. Вы можете передать ему список, и он вернет первое ненулевое значение в списке. Вы бы использовали это в своем запросе следующим образом:
SELECT COALESCE((SUM(tr.AmountPaid) - SUM(tr.AmountCharged)), 0) AS TenantBalance, te.ID
FROM tblTenant AS te
LEFT JOIN tblTransaction AS tr ON (tr.TenantID = te.ID)
GROUP BY te.ID;
Таким образом, если результат SUM()
будет НЕДЕЙСТВИТЕЛЕН, он заменяется на ноль.
Отредактировано : я переписал запрос, используя левое соединение, а также COALESCE()
, я думаю, что это ключ к тому, чего вам не хватало изначально. Если вы выбираете только из таблицы «Операции», то нет способа получить информацию о вещах , а не в таблице. Однако, используя левое соединение из таблицы Tenants, вы должны получить строку для каждого существующего арендатора.