Mysql 如何基于其他3个表从表中选择数据?
以下是表格和相关字段:Mysql 如何基于其他3个表从表中选择数据?,mysql,sql,select,join,inner-join,Mysql,Sql,Select,Join,Inner Join,以下是表格和相关字段: shapes: shape_id, shape_value trips: shape_id, trip_id stop_times: trip_id, stop_id stops: stop_id, stop_value 现在,逻辑流程如下: 我想选择shapes\u shape.value其中shapes.shape\u id=trips.shape\u id trips.shape\u id在trips.trip\
shapes: shape_id, shape_value
trips: shape_id, trip_id
stop_times: trip_id, stop_id
stops: stop_id, stop_value
现在,逻辑流程如下:
我想选择shapes\u shape.value其中shapes.shape\u id=trips.shape\u id
trips.shape\u id在trips.trip\u id=stop\u times.trip\u id
停止次数。选择行程id,其中停止次数。停止id=停止。停止id
最后停止。在停止值<5
我怎么能对此提出质疑
还值得一提的是:对于每个停止时间。停止id可能有20-50行具有相同的停止时间。跳闸id(列中的其他参数不同)与跳闸相同。跳闸id和跳闸。形状id。如何修改数据库和表以使服务器更方便?如果有其他行具有相同的2列,如何删除这些行
停止时间表中的示例:
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语法,无法理解联接表和一般复杂的select查询的概念
*值得一提的是,每个表都包含50000-500000行,而现在我正在构建我的应用程序的基础,并希望它能够正常工作。我很高兴收到任何关于如何进一步改进查询的建议,以及一些供我以后在开发中研究的概念(虽然您可以在这里为我提供的查询很简单,可能没有优化)只需使用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;
选择s.shape\u值
从形状到形状
s.shape_id=t.shape_id上的内部连接跳闸t
t.trip\u id=st.trip\u id上的内部连接停止时间
在st.stop\U id=ss.stop\U id上的内部连接止动块ss
其中ss.stop_值<5;
谢谢,我已经在代码中实现了此查询,但在服务器没有回答3分钟后,我得到了“500内部服务器错误”(我从虚拟机运行服务器和数据库,可能太弱)但也有一些因素可能导致这种情况:对于每个stop_times.stop_id,可能有20-50个相同的stop_times.trip_id(其他参数不同,但目前我可能可以将它们丢弃,如果对服务器要求太高)与trips.trip\u id和trips.shape\u id相同。如何使服务器上的查询更轻松?如果需要更改数据库,如何更改?