我的SQL查询出错了;
mysql_query("
SELECT * from houses
WHERE pcode=(
SELECT outcode,(SQRT((pow((`x` -$x),2)) + (pow((`y` -$y),2)))) AS `distance`
FROM hwz_postcodes
WHERE `x` BETWEEN $xnegexp AND $xplusexp
AND `y` BETWEEN $ynegexp AND $yplusexp
ORDER BY `distance`
)");
基本上有2个表,一个表有一个房屋列表,有一个相应的邮政编码,另一个表是一个邮政编码列表。我的查询基本上将邮政编码与附近的邮政编码进行比较,并显示附近的房屋。
子查询成功找到最近的邮政编码,并按距离的顺序列出。现在我可以将它放入while循环中,然后在其中执行另一个查询以查看house表,但它效率不高。
任何人都可以建议查询的解决方案,记住初始子查询结果需要按距离排序,其中距离由显示的平方根公式规定。
提前致谢!!
答案 0 :(得分:0)
也许你想要这样的东西......
SELECT h.*
, p.*
FROM houses h
JOIN hwz_postcodes p
ON p.outcode = h.pcode
WHERE p.x BETWEEN $xnegexp AND $xplusexp
AND p.y BETWEEN $ynegexp AND $yplusexp;