我有三张table,预算,收入和支出。
预算表:
收入表:
费用表:
这是我的sql语句:
SELECT
Budgets.BudgetID, Budgets.BudgetName, Budgets.Username_FK,
Budgets.BudgetAmount, Budgets.SavePercentage,
Expenses.ExpensesID, Expenses.ExpensesAmount, Expenses.ExpensesCategory,
Income.IncomeID, Income.IncomeAmount, Income.IncomeCategory
FROM
Budgets
LEFT JOIN
Income ON Budgets.BudgetID = Income.BudgetID_FK
LEFT JOIN
Expenses ON Budgets.BudgetID = Expenses.BudgetID_FK
WHERE
BudgetName = '2019
结果如下:
基于我的 Income
表中,只有一个记录绑定到 BudgetID = 3
,但在左连接中,它是重复的。
理想情况下,我希望它在副本上返回“null”。我该怎么做?
2条答案
按热度按时间7kjnsjlb1#
你有好几排
expenses
每budgetID
,所以您的联接会产生那么多行。我倾向于怀疑同样的情况也会发生在income
我也是。如果你想要一排
budgetID
,则一个选项是预聚合和left join
(或outer apply
). 假设您想要每个预算的总费用和收入,您可以执行以下操作:现在,您将依赖表中的行分组为
budgetID
,因此无法看到这些表的其他列,例如incomeCategory
或者expenseCategory
(每个值有多个值)budgetID
).baubqpgj2#
对于budgetid 3,同一用户的开支表中有4个开支(不同的开支ID)为50.00。我想你想要的是相同类别和预算id的总费用,在这种情况下是预算id 3