以下是表格和相关字段:
shapes: shape_id, shape_value
trips: shape_id, trip_id
stop_times: trip_id, stop_id
stops: stop_id, stop_value
现在是逻辑流程:
我想选择 shapes_shape.value ,其中 shapes.shape_id = trips.shape_id
trips.trip_id = stop_times.trip_id 选择trips.shape_id stop_times.stop_id = stops.stop_id
选择stop_times.trip_id
最后选择 stops.stop_id ,其中 stop_value< 5
我该如何查询?
还值得一提:对于每个 stop_times.stop_id ,可能有20-50行具有相同的 stop_times.trip_id (列中的其他参数不同)与 trips.trip_id 和 trips.shape_id 。如何修改数据库和表以使服务器更容易?如果有其他行具有相同的2列,我该如何删除行?
stop_times表中的示例:
trip_id arrival_time departure_time stop_id stop_sequence
2147483647 05:26:30 05:26:30 8447 4
2147483647 05:36:30 05:36:30 8447 4
2147483647 05:46:30 05:46:30 8447 4
2147483647 05:56:30 05:56:30 8447 4
2147483647 06:06:30 06:06:30 8447 4
我是SQL语法的新手,无法获得连接表的概念以及通常复杂的选择查询。
*重要的是要提到每个表包含50,000-500,000行,而现在我正在构建我的应用程序的基础并希望使其正常工作我很乐意收到有关如何改进查询的任何建议进一步,只是让我在开发后期进行研究的概念(虽然你在这里提供的查询很简单,可能没有那么优化)
答案 0 :(得分:1)
只需使用 JOIN 即可将表与适当的列连接起来。检查以下查询:
试试这个:
SELECT s.shape_value
FROM shapes s
INNER JOIN trips t ON s.shape_id = t.shape_id
INNER JOIN stop_times st ON t.trip_id = st.trip_id
INNER JOIN stops ss ON st.stop_id = ss.stop_id
WHERE ss.stop_value < 5;