Mysql 从给定位置的最近位置查找驱动程序
我有三张桌子 表1-驱动因素 表2-位置 表3-距离 用户将搜索与位置匹配的驱动程序。在驱动程序表中,位置指驱动程序的当前位置。如果某个特定位置没有可用的驱动程序,我需要一个查询来搜索与用户提供的位置最近的驱动程序Mysql 从给定位置的最近位置查找驱动程序,mysql,sql,Mysql,Sql,我有三张桌子 表1-驱动因素 表2-位置 表3-距离 用户将搜索与位置匹配的驱动程序。在驱动程序表中,位置指驱动程序的当前位置。如果某个特定位置没有可用的驱动程序,我需要一个查询来搜索与用户提供的位置最近的驱动程序 表2是位置名称,表3是从一个地方到另一个地方的距离。但问题是,如果存储了从locationid 1到locationid 2的距离,则相反的版本不是(locationid 2到locationid 1)。这不是直接的 首先,您需要获取给定位置与之有关系的所有位置。此结果包括lo
表2是位置名称,表3是从一个地方到另一个地方的距离。但问题是,如果存储了从locationid 1到locationid 2的距离,则相反的版本不是(locationid 2到locationid 1)。这不是直接的 首先,您需要获取给定位置与之有关系的所有位置。此结果包括
locationid
和distance
与位置本身的距离为零。我已经得到了联合所有人的帮助,以便列出
然后在上面的列表和您的驱动程序表之间进行内部联接,以匹配位置
最后根据距离对结果集进行升序排序
SELECT
*
FROM drivers DR
INNER JOIN
(
SELECT
locationid,
0 AS distance
FROM location
WHERE locationname = 'Gulshan'
UNION ALL
SELECT
IF(L.locationid = D.fromid, D.toid, D.fromid),
D.distance
FROM location L
INNER JOIN distance D ON L.locationid IN (D.fromid,D.toid)
WHERE locationname = 'Gulshan'
) AS t
ON DR.location = t.locationid
ORDER BY t.distance
或
注意:您可以包括LIMIT n
,以限制最多包含topn
搜索结果的结果集
您还可以在查询中包含一个。其中距离
,以便最终结果具有某种意义。因此编写该查询。听起来很有趣。在实践中,距离是用达卡的时间来衡量的。(:p)。请展示您尝试过的内容,并根据一些示例输入分享您的预期输出。哈哈哈!对是的许多事情需要澄清。您如何识别可用的驱动程序?您的预期结果集是否最多包含一个条目?用户使用什么进行搜索?用户是否使用Mirpur
之类的文本进行搜索?使用示例数据共享表的脚本。非常感谢。回答得好!