加入Sqlite中间表

加入Sqlite中间表,sqlite,Sqlite,我的sqlite数据库中有这个模式 CREATE TABLE `CARS` ( `ID` INTEGER, `Name` TEXT, PRIMARY KEY(ID) ); CREATE TABLE `OWNERS` ( `ID` INTEGER, `Name` TEXT, PRIMARY KEY(ID) ); 以及车主表和汽车表之间的中间表 CREATE TABLE `OwnerCars` ( `OwnerId` INTEGER,

我的sqlite数据库中有这个模式

CREATE TABLE `CARS` (
    `ID`    INTEGER,
    `Name`  TEXT,
    PRIMARY KEY(ID)
);

CREATE TABLE `OWNERS` (
`ID`    INTEGER,
`Name`  TEXT,
PRIMARY KEY(ID)
);
以及车主表和汽车表之间的中间表

CREATE TABLE `OwnerCars` (
    `OwnerId`   INTEGER,
    `CarId` INTEGER,
    PRIMARY KEY(OwnerId,CarId),
    FOREIGN KEY(`OwnerId`) REFERENCES `Owners`(`Id`),
    FOREIGN KEY(`CarId`) REFERENCES `Cars`(`Id`)
);
询问这个问题,我只会得到有车的车主和他们的车数

select ownerid, count(carid) as carscount from OwnerCars 
                            inner join Owners on ownerid = id
                            group by(ownerid) 
如何获得所有车主(包括没有车的车主,他们的车数为0)。
谢谢你的帮助

对查询使用左外部联接,同时将所有者表保持在左侧

select o.id, count(carid) as carscount 
from owner o
Left Outer join OwnerCars on ownerid = o.id
group by(o.id) 

谢谢你的回复。只使用代码的答案没有多大帮助。试着给你的答案添加一些上下文来解释它在做什么。
select OWNERS.ID, count(OwnerCars.CarId) as carscount
from OWNERS Left Outer join OwnerCars on OwnerCars.OwnerId=OWNERS.ID
group by(OWNERS.ID);