2013-05-02 4 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 개의 테이블이 있는데 하나의 테이블에는 부식 대응 게시물 코드가있는 집 목록이 있고 다른 테이블에는 우편 코드 목록이 있습니다. 내 쿼리는 기본적으로 포스트 코드를 근처의 포스트 코드와 비교하고 근처 집을 보여줍니다.

하위 쿼리는 가장 가까운 엽서를 찾아 성공적으로 거리 순서대로 나열합니다. 이제는 이것을 while 루프에 넣은 다음 집 테이블을보기 위해 다른 쿼리를 수행 할 수 있지만 효율적이지는 않습니다.

누군가가 쿼리에 대한 해결책을 제안 할 수 있습니다. 초기 서브 쿼리 결과는 거리별로 정렬해야하며, 여기서 거리는 표시된 제곱근 수식에 의해 규정됩니다.

미리 감사드립니다.

+0

... 이런 식으로 뭔가를 할 수 있습니다. 그게 효과가 없을거야. – Strawberry

답변

0

은 아마 당신은 당신이 동일한 OUTCODE 거리에 PCODE을 요구하고

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; 
관련 문제