我知道有很多关于这方面的问题,但我似乎无法找到解决问题的逻辑。这是我的剧本,如果您需要更多信息,请告诉我。
SELECT
DISTINCT StationID
from
station
JOIN
cars ON station.StationID = cars.CurrentStationID
WHERE
station.Capacity = (SELECT
Count(cars.CurrentSlotID)
FROM
cars Group By CurrentStationID
);
我想做的是,
我有一个名为Station的表,其容量值为INT。
我有另一个名为cars的表,它有一个StationID外键。
现在我想让所有基于站点数据库容量的站点等于车载数据库中的车辆数量。
答案 0 :(得分:0)
SELECT s.StationID
from station s
JOIN cars c ON s.StationID = c.CurrentStationID
group by s.stationID, s.Capacity
having count(c.CurrentStationID) = s.Capacity
答案 1 :(得分:0)
我更像是一个SQL Server用户,但这听起来像你需要的那样:
SELECT
StationID
from
station
WHERE
station.Capacity = (SELECT
Count(CurrentSlotID)
FROM
cars
WHERE cars.CurrentStationID = station.StationID
);
您需要指明您只想计算cars
中与您在主查询中加入的电台具有相同CurrentStationID
的记录。而且您在主查询中实际上并不需要cars
,因为您不会从中访问任何数据:仅station
。因此,您不需要DISTINCT,因为您只需每StationID
个值返回一条记录。 (假设StationID
是station
的主键。)
答案 2 :(得分:0)
这应该显示每个车站,其容量和车站的车辆数量,只有车站满或超过其容量。 (因此,在HAVING子句中,> =而不是=)
select s.stationid,
s.capacity,
count(c.currentstationid) as num_cars_at_station
from station s
join cars c
on s.stationid = c.currentstationid
group by s.stationid, s.capacity
having count(c.currentstationid) >= s.capacity