Ich werde versuchen, aus den Daten meiner SQL Server-Datenbank ein Diagramm zu erstellen. Ich werde alle Straßen mit der Anzahl der Benutzer haben, die in dieser Straße leben, auch wenn die Anzahl Null ist.
Dafür habe ich diese Abfrage versucht:
Create table Streets(
ID int IDENTITY primary key,
Name varchar(100)
);
create table users(
ID int IDENTITY primary key,
Username varchar(100),
StreetID int references Streets(id)
);
insert into streets values ('1st street'), ('2nd street'), ('3rd street'),
('4th street'), ('5th street');
insert into users values ('Pol', 1), ('Doortje', 1), ('Marc', 2), ('Bieke', 2),
('Paulien', 2), ('Fernand', 2), ('Pascal', 2), ('Boma', 3),
('Goedele', 3), ('Xavier', 4);
select s.name as street, count(s.name) as count
from users u inner join streets s on u.streetid = s.id
group by s.name
Und es gibt mir diese Ausgabe:
| | street | count |
| - | ---------- | ----- |
| 1 | 1st street | 2 |
| 2 | 2nd street | 5 |
| 3 | 3rd street | 2 |
| 4 | 4th street | 1 |
Das Problem ist, dass die 5. Straße, in der kein Benutzer lebt, nicht im Ergebnis angezeigt wird. Könnte ich das mit SQL Server machen? Hier hast du eine Geige
Update: Wenn ja right join
, habe ich folgendes Ergebnis:
| | street | count |
| - | ---------- | ----- |
| 1 | 1st street | 2 |
| 2 | 2nd street | 5 |
| 3 | 3rd street | 2 |
| 4 | 4th street | 1 |
| 5 | 5th street | 1 |
right join
und right outer join
sind die gleichen Dinge. Ich habe meiner Antwort eine Erklärung hinzugefügt, wie von @ jpmc26 vorgeschlagen.
COUNT(u.streetid)