2017-04-07 60 views
0

我在我的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, 
    `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) 

我怎樣才能讓所有車主(包括thos沒有汽車和他們的車數爲0)。 感謝您的幫助!

回答

1

使用左外部加入到您的查詢,還將所有者表保持在左側。

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

謝謝,它的工作。 –

0
select OWNERS.ID, count(OwnerCars.CarId) as carscount 
from OWNERS Left Outer join OwnerCars on OwnerCars.OwnerId=OWNERS.ID 
group by(OWNERS.ID); 
+0

感謝您的回覆。 –

+1

只有代碼答案不是很有幫助。嘗試在答案中添加一些上下文來解釋它在做什麼。 – Adam