2013-05-02 60 views
1

我的SQL查询出错;MYSQL子查询错误“操作数至少应包含一列”

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代表一个表具有房屋的列表与corrosponding交码和其它表是交码的列表。我的查询基本上将邮政编码与附近的邮政编码进行比较,并显示附近的房屋。

子查询成功找到最近的邮政编码并按距离顺序列出它们。现在我可以把它放到一个while循环中,然后在其中执行另一个查询来查看房子表,但是效率不高。

任何人都可以提出一个解决方案的查询,记住最初的子查询结果需要按距离排序,其中距离由显示的平方根公式规定。

在此先感谢!

+0

你问P码等于outcode的和距离。这是行不通的。 – Strawberry 2013-05-02 23:11:16

回答

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; 
相关问题