如果一个表中的值与第一个表中的值匹配,则从一个表中选择

时间:2018-12-30 13:36:52

标签: sql postgresql

我有2个表,城市 driveRoute City 具有州和城市代码属性。 driveRoute 具有Origin和Destination属性。

城市数据如下:TX | ABI

driveRoute 数据如下所示:ABI | ABQ

因此,我希望得到的是:TX | 15,其中TX是德克萨斯州(示例),而15是德克萨斯州内的路由数(示例)。

我正在尝试获取具有计数的不同状态,其中driveRoute具有相同的原始状态和目标状态。到目前为止,我得到的是州内始发地或目的地的总路线数:

SELECT DISTINCT state,COUNT(state) AS count
FROM driveRoute join
     City
     on origin = cityCode
GROUP BY state
ORDER BY count DESC
LIMIT 5;

2 个答案:

答案 0 :(得分:0)

如果我理解正确,则需要两个join

SELECT co.state, COUNT(*)
FROM driveRoute dr JOIn
     City co
     ON dr.origin = co.cityCode JOIN
     City cd
     ON dr.destination = cd.cityCode
WHERE co.state = cd.state
GROUP BY co.state;

答案 1 :(得分:0)

首先从driveRoute中获取行
包含来自同一Origin的{​​{1}}和Destination
然后State

GROUP BY State