选择数据以符合与另一个表

时间:2016-02-23 17:30:55

标签: mysql sql sql-server

帮助

考虑到一名乘客住在他的第一个航班起飞城镇,找到那些不止一次访问过莫斯科的其他城市居民的乘客。结果集:乘客姓名,访问莫斯科的次数。

Details

我试图解决这个问题,但我不知道如何从出发开始带城市,然后选择这个选择最多飞往莫斯科的人,请帮忙。

select p.name, count(pt.trip_no) from passenger as p, trip as t, pass_in_trip as pt
where pt.trip_no = t.trip_no and town_to='Moscow'
group by pt.trip_no;

我的结果集就是这个

'Bruce Willis', '128'
'Bruce Willis', '64'

但我不知道如何让那些不止一次飞往莫斯科的人

1 个答案:

答案 0 :(得分:0)

不确定他们为什么要教逗号分隔的连接,但你可以这样做

SELECT  p.id_psg,
        p.name,
        COUNT(pt.trip_no)
FROM    passenger AS p
        INNER JOIN pass_in_trip pit ON p.id_psg = pit.id_psg
        INNER JOIN trip AS t ON pit.trip_no = t.trip_no
WHERE   t.town_to = 'Moscow'
GROUP BY p.id_psg,
        p.NAME
HAVING  COUNT(pt.trip_no) > 1;

你最大的问题是你没有正确加入乘客pass_in_trip,因为你没有在你的位置列出连接条件.. INNER JOIN将有助于防止这种情况。

由于文本还清楚地说明乘客可以使用相同的名称,因此您还应该在组中包含ID_psg,因为这是唯一标识符。