SQL使用列值从另一个表中获取列值,然后使用该值从具有该值的第三个表中获取列数?

SQL使用列值从另一个表中获取列值,然后使用该值从具有该值的第三个表中获取列数?,sql,select,Sql,Select,我有三张桌子: Carrier(CarrierID(PK), FirstName, LastName) Customer(CustomerID(PK), FirstName, LastName, RouteID(FK)) Route(RouteID(PK), CarrierID(FK), RouteName) 每条路线只有一个承运人 我需要显示每个运营商负责的客户数量 我知道我需要使用CarrierID来获取RouteID,然后使用RouteID来计算使用该RouteID的客户行数 有人能给我

我有三张桌子:

Carrier(CarrierID(PK), FirstName, LastName)
Customer(CustomerID(PK), FirstName, LastName, RouteID(FK))
Route(RouteID(PK), CarrierID(FK), RouteName)
每条路线只有一个承运人

我需要显示每个运营商负责的客户数量

我知道我需要使用CarrierID来获取RouteID,然后使用RouteID来计算使用该RouteID的客户行数


有人能给我解释一下SELECT语句的样子吗

如果您需要不同数量的客户,可以使用count(distinct..)group by和join

select r.CarrierID, count(distinct CustomerID )
from Route r
inner join Customer c on c.RouteID = r.RouteID
group by r.CarrierID


select r.CarrierID, c2.Firstname, c2.Lastname, count(distinct CustomerID )
from Route r
inner join Customer c on c.RouteID = r.RouteID
inner join Carrier c2 on c2.CarrierID = r.CarrierID
group by r.CarrierID, c2.Firstname, c2.Lastname

如果需要不同数量的客户,可以使用count(distinct..)group by和join

select r.CarrierID, count(distinct CustomerID )
from Route r
inner join Customer c on c.RouteID = r.RouteID
group by r.CarrierID


select r.CarrierID, c2.Firstname, c2.Lastname, count(distinct CustomerID )
from Route r
inner join Customer c on c.RouteID = r.RouteID
inner join Carrier c2 on c2.CarrierID = r.CarrierID
group by r.CarrierID, c2.Firstname, c2.Lastname

您熟悉加入
吗?这是一个非常基本的SQL概念。您熟悉
JOIN
?这是一个非常基本的SQL概念。如果我需要在相同的结果中显示
Carrier.FirstName
Carrier.LastName
,该怎么办?如果我需要在相同的结果中显示
Carrier.FirstName
Carrier.LastName
,该怎么办?