ฉันจะพยายามสร้างกราฟจากข้อมูลจากฐานข้อมูลเซิร์ฟเวอร์ SQL ของฉัน ฉันจะมีถนนทุกเส้นที่มีจำนวนผู้ใช้ที่อาศัยอยู่บนถนนเส้นนี้แม้จำนวนนั้นจะเป็นศูนย์
สำหรับสิ่งนี้ฉันได้ลองใช้แบบสอบถามนี้:
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
และมันให้ผลลัพธ์นี้กับฉัน:
| | street | count |
| - | ---------- | ----- |
| 1 | 1st street | 2 |
| 2 | 2nd street | 5 |
| 3 | 3rd street | 2 |
| 4 | 4th street | 1 |
ปัญหาคือถนนสายที่ 5 ซึ่งไม่มีผู้ใช้อาศัยอยู่จะไม่ปรากฏในผลลัพธ์ ฉันสามารถทำสิ่งนี้กับเซิร์ฟเวอร์ SQL ได้หรือไม่ ที่นี่คุณมีไวโอลิน
อัปเดต:ถ้าฉันทำright join
ฉันได้รับผลลัพธ์นี้:
| | street | count |
| - | ---------- | ----- |
| 1 | 1st street | 2 |
| 2 | 2nd street | 5 |
| 3 | 3rd street | 2 |
| 4 | 4th street | 1 |
| 5 | 5th street | 1 |
right join
และright outer join
เป็นสิ่งเดียวกัน ฉันเพิ่มคำอธิบายลงในคำตอบตามที่ @ jpmc26 แนะนำ
COUNT(u.streetid)