加入Sqlite中间表
我的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,
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);