Angenommen, ich besitze eine Tabelle SESSIONS mit zwei Spalten - "session_id" und "username", die mir sagt, welcher Benutzer an welcher Sitzung in meiner Site beteiligt war. Ich habe auch eine andere Tabelle USERS mit Spalten "Benutzername" und "Land". Nun, wenn ich wissen will, wie viele Sitzungen von jedem Land kamen, ichSQL: Standardwerte für Zeilen, die keinem JOIN-Kriterium entsprechen?
SELECT count(*), sessions.username, users.country
FROM sessions
INNER JOIN users
ON sessions.username=users.username
GROUP BY country
Jetzt hier ist das Problem: nicht jeder Benutzer in der SESSIONS Tabelle tatsächlich eine Zeile in der Tabelle USERS hat. Für diese Benutzer möchte ich "unbekannt" für Land schreiben, aber nicht ihre Sitzungen vollständig ignorieren.
Gibt es einen "richtigen" Weg, es direkt in der SQL-Abfrage zu tun? Ich kann immer PHP Magie nach geeigneten Abfragen, oder Benutzer hinzufügen, um die USERS-Tabelle, wenn eine Zeile hinzugefügt SESSIONS mit einem Benutzer nicht derzeit in USERS, aber ich frage mich, ob es gibt einige SQL-Weg zum Erkennen der "fehlenden" Zeilen und weisen ihnen einen Standardwert zu.
Ungültige Gruppe durch Abfrage benötigen ... Die allgemeine GROUP BY-Regel sagt: „Wenn ein GROUP BY-Klausel angegeben ist, jede Spalte Verweis in der SELECT-Liste muss entweder eine Gruppierungsspalte identifizieren oder das Argument einer Set-Funktion sein. " – jarlh