Tôi sẽ cố gắng tạo một biểu đồ từ dữ liệu từ cơ sở dữ liệu máy chủ SQL của tôi. Tôi sẽ có tất cả các đường phố với số lượng người dùng đang sống ở đường này thậm chí số lượng bằng không.
Đối với điều này, tôi đã thử truy vấn này:
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
Và nó mang lại cho tôi đầu ra này:
| | street | count |
| - | ---------- | ----- |
| 1 | 1st street | 2 |
| 2 | 2nd street | 5 |
| 3 | 3rd street | 2 |
| 4 | 4th street | 1 |
Vấn đề là đường thứ 5, nơi không có người dùng sống, không xuất hiện trên kết quả. Tôi có thể làm điều này với máy chủ SQL không? Ở đây bạn đã có một câu đố
Cập nhật: Nếu tôi làm right join
, tôi đã nhận được kết quả này:
| | street | count |
| - | ---------- | ----- |
| 1 | 1st street | 2 |
| 2 | 2nd street | 5 |
| 3 | 3rd street | 2 |
| 4 | 4th street | 1 |
| 5 | 5th street | 1 |
right join
và right outer join
là những thứ giống nhau. Tôi đã thêm một lời giải thích trong câu trả lời của mình theo đề xuất của @ jpmc26.
COUNT(u.streetid)