大家好,我这里有以下三张表。
COUNTRIES
ID | Name | Details
Airports
ID | NAME | CountryID
Trips
ID | AirportID | Date
我必须检索显示以下内容的列表:
AirportID | AIrport Name | Country Name | Number of Trips Made Between Date1 and Date2
我需要这样做才能真正有效,我需要设置什么样的索引以及如何在这里制定 SQL 查询?我将使用 PHP 来显示这个。请注意,我需要能够根据出行次数进行排序。
编辑 ==
哎呀忘了提我的sql:
我尝试了以下方法:
SELECT `c`.*, `t`.`country` AS `country_name`, COUNT(f.`id`) AS `num_trips` FROM `airports` AS `c`
LEFT JOIN `countries` AS `t` ON t.`id` = c.`country_id`
LEFT JOIN `trips` AS `f` ON f.`airportid` = c.`id` GROUP BY `c`.`id` ORDER BY `num_flights` ASC LIMIT 10
它可以工作,但需要很长时间才能执行 - 再加上考虑到我的 airports 表有超过 30'000 个条目,并且 trips 表是可变的。
我只是从国家表中获取国家/地区的名称 - 如果我在 sql 中排除加入国家/地区表,而是从索引为 ID 和值的数组中检索国家/地区名称会更好国家名称?