我有3张桌子
table1 = id ---专业----城市,......
table2 = id --- latm1 ---- longm1 ---- latm2 ---- longm2,...(2更多lat和long)
table3 = id --- latd1 ---- longd1 ---- latd2 ---- longd2,...(2更多lat和long)
id是相同的,所有lats和longs都是针对一个有id的人(他为4家医院和其他4种情况工作)
考虑来自$ _POST的这个varbiales:
$专业;
$ userlat;
$ userlong;
我想这样说: 选择table1中的所有东西,其中他的专长=“$ special”,他靠近这个lat =“$ userlat”,long =“$ userlong”,距离为4km;
我知道这听起来很荒谬但是就是这样:(
我正在使用这个方法在我的数据库中找到最近的latlang:
$sql = "SELECT
*,
(
6371 * ACOS(
COS(RADIANS($userlat)) * COS(RADIANS(latm1)) * COS(RADIANS(langm1) - RADIANS($userlang)) + SIN(RADIANS($userlat)) * SIN(RADIANS(latm1))
)
) AS distance
FROM
?
HAVING distance < 20 ";
但如您所见,它只搜索latm1和longm1,而不是其他表中的其他表(例如:来自table2的latm2和longm2或来自table3的latd3和longd3)
感谢您的耐心等待;
答案 0 :(得分:0)
是的,你可以!
简化语法:
$sql = "SELECT table1.id, table1.val, table2.id, table2.val
FROM table1, table2 WHERE table1.id = table2.id";
我有时会在这个简单的例子中留下它。