Ich habe Probleme beim Konvertieren meiner Budgetübersichtsansicht vom letzten Jahr auf dieses Jahr. Hier ist die SELECT-Anweisung für die Ansicht des letzten Jahres, die Dinge richtige zurück:Wie erweiterte Einschränkungen auf einem LINKEN JOIN ordnungsgemäß verwendet werden, um alle Ergebnisse auf der linken Seite zurückzugeben
SELECT
b.Category AS Category,
b.Amount AS Amount,
SUM(e.Amount) AS Spent,
(b.Amount - SUM(e.Amount)) AS Remaining
FROM
Budget AS b LEFT JOIN Expenditure AS e
ON (
b.Category = e.BudgetCategory
AND e.Date < '2016-01-01'
AND e.Date > '2015-01-01'
AND b.Year = 2015
)
GROUP BY e.BudgetCategory
Wenn ich die Daten bearbeiten, so dass es in diesem Jahr umfasst, dann bricht es die Ansicht, da keine Datensätze in der Ausgaben-Tabelle sind, die von dieses Jahr. Es gibt nur den ersten Datensatz aus Budget zurück und die Felder, die auf Ausgaben angewiesen sind, sind NULL. Ich möchte, dass alle Datensätze aus dem Budget zurückgegeben werden und NULL für alle Felder angezeigt wird, die sich auf die Ausgaben beziehen, die von den Ausgaben abhängen.
Was im letzten Jahr Ansicht kehrt:
Category | Amount | Spent | Remaining
--------------------------------------------------------------
Contractors | 0.00 | NULL | NULL (this is correct)
Gasoline | 250.00 | 240.00 | 10.00
Merchandise | 2000.00 | 1900.00 | 100.00
etc ...
Was es für dieses Jahr ist die Rückkehr:
Category | Amount | Spent | Remaining
--------------------------------------------
Contractors | 4000.00 | NULL | NULL
Was ich es (während der Ausgaben zurückkehren möge Ergebnisse bleiben 0):
Category | Amount | Spent | Remaining
--------------------------------------------
Contractors | 4000.00 | NULL | NULL
Gasoline | 300.00 | NULL | NULL
Merchandise | 2500.00 | NULL | NULL
etc ...
Was mache ich falsch?
Ist 'Kategorie' ein eindeutiger Schlüssel (vielleicht der Primärschlüssel) der Tabelle' Budget'? Oder kann es mehrere "Budget" -Rekorde für dieselbe "Kategorie" geben? –