Ich versuche, eine Abfrage in MS Access 2013 zu schreiben, und die linke Verknüpfung funktioniert nicht ordnungsgemäß. Es verhält sich wie ein normaler Join.MS Access Left Join funktioniert nicht richtig
Hier ist, was ich versuche zu tun.
Meine erste Tabelle [All Category Types]
hat eine Spalte [Category Types]
. Ich versuche dann, das mit einer Abfrage zu verknüpfen, die zwei Aggregatfelder enthält. Virtuelle Tabelle [Average by Category Type]
wird zuerst nach Besitzer und dann nach [Category Type]
gruppiert. Weiter ist ein Summenfeld [CountOfIncident: Number]
.
Was ich will als Ergebnis ist jedes Element in der Tabelle [All Category Types]
und dann die richtige [CountOfIncident: Number] where Owner == "France"
. Dies funktioniert nicht als linker Join. Es zeigt mir nur die Werte in [All Category Types]
, die einen übereinstimmenden Datensatz in [Average by Category Type]
haben.
Wenn ich den Besitzer aus dieser Tabelle entferne und nur nach [Category Type]
gruppiere, funktioniert es ganz gut. Gibt es etwas über das Vorhandensein von mehr als einem Feld in der group by-Klausel, die nicht zulässt, dass eine linke Verknüpfung einer Abfrage ordnungsgemäß funktioniert?
SELECT [All Category Types].[Category Type],
[Average by Category Type].[CountOfIncident: Number]
FROM [All Category Types]
LEFT JOIN [Average by Category Type]
ON [All Category Types].[Category Type] = [Average by Category Type].[Category Type]
WHERE ((([Average by Category Type].Owner)="France"));
Vielen Dank.
Mein 5c: Ich finde Abfragen weniger lesbar, wenn die Spalten Leerzeichen enthalten und maskiert werden müssen. Warum nicht einfach 'SELECT all_category_types.category_type'? Ich finde auch Abfragen weniger lesbar, wenn mehrere Tabellen beteiligt sind, aber keine Tabellen-Aliase verwendet (z. B. SELECT ct.category_type). Ich finde auch weniger lesbare Abfragen mit vielen überflüssigen Klammern. Warum nicht einfach 'WHERE [Durchschnitt nach Kategorie] .Owner =" France "'? Endlich würde ich lieber wo immer möglich Standard-SQL verwenden. Das wären einfache Anführungszeichen für String-Literale: '= 'France'. –