Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何基于其他3个表从表中选择数据?_Mysql_Sql_Select_Join_Inner Join - Fatal编程技术网

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 idtrips.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相同。如何使服务器上的查询更轻松?如果需要更改数据库,如何更改?