1

簡略化されたスキーマは次のとおりです。

CREATE TABLE IF NOT EXISTS `person` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `HousingId` int(11) NOT NULL,
  PRIMARY KEY (`Id`)
);

CREATE TABLE IF NOT EXISTS `housing` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Capacity` int(11) NOT NULL,
  PRIMARY KEY (`Id`)
);

各住宅の空きスペースを簡単に取得するにはどうすればよいですか?

次のクエリを試しました。

select housing.Id, housing.Capacity - count(person.Id)
from housing, person 
where person.HousingId = housing.Id 
group by housing.Id 

しかし、それは少なくとも一人の人がいる住宅に対してのみ機能し、空の人に対しては機能しません。

ご協力いただきありがとうございます !

4

1 に答える 1

4

外部結合を使用する

select housing.Id, housing.Capacity - count(person.Id)
from housing
LEFT OUTER JOIN person ON person.HousingId = housing.Id 
group by housing.Id, housing.Capacity
于 2013-01-06T21:07:07.933 に答える