2011-10-21 2 views
0

일부 부동 값을 비교하고 싶습니다. 이렇게하려면 내 쿼리는 다음과 같습니다 :중첩 쿼리 sql, 실행할 수 없습니다.

SELECT * FROM pricelist WHERE START_FREQUENCY >= '(
    SELECT START_FREQUENCY 
    FROM pricelist 
    WHERE START_FREQUENCY BETWEEN '0.49999' AND '0.50001' 
)' AND STOP_FREQUENCY <= '(
    SELECT STOP_FREQUENCY 
    FROM pricelist 
    WHERE STOP_FREQUENCY BETWEEN '0.59999' AND '0.60001' 
)' 

그러나 내 PHP에서 '쿼리를 실행할 수 없습니다'가 표시됩니다. 내가 잘못하고있는 곳?

편집을 도와주세요 :

나는 두 개의 필드, START_FREQUENCYSTOP_FREQUENCY가 테이블을 가지고있다. 주파수 범위 내에서 오는 모든 값을 추출하려고합니다. 사용자가 start frequency = 0.4 and stop frequency = 1.9를 입력하면 예를 들어 그는 Row1, Row2Row3의 결과를 얻을해야

START_FREQUENCY STOP_FREQUENCY 
1   0.4   0.9 
2   0.5   1.4 
3   0.8   1.9 

을 말한다.

+0

당신이 선택하는 뜻이야, 난 당신이 하위 쿼리 : – xdazz

답변

3

내부 SELECT는 따옴표로 묶지 마십시오. 이것을 시도하십시오 :

SELECT * FROM pricelist WHERE START_FREQUENCY >= (
    SELECT START_FREQUENCY 
    FROM pricelist 
    WHERE START_FREQUENCY BETWEEN 0.49999 AND 0.50001 
) AND STOP_FREQUENCY <= (
    SELECT STOP_FREQUENCY 
    FROM pricelist 
    WHERE STOP_FREQUENCY BETWEEN 0.59999 AND 0.60001 
) 

나는 또한 당신의 수의 주위에 따옴표를 제거했다; MySQL은 그것들을 뒤에서 숫자로 변환하지만, 데이터베이스를 추측하고 더 많은 일을 할 필요가 없습니다.

SELECT * 
FROM pricelist 
WHERE START_FREQUENCY >= '...'0.49999' AND '0.50001'...' 
    AND STOP_FREQUENCY <= '...'0.59999' AND '0.60001'...' 

그리고 'string'0.49999'이 유효하지 않습니다

버전이이 구조를 가지고있다.


업데이트 : 당신은 그냥이과 복잡함을 것 같은는 소리. 난 당신이 단지 (당신의 0.4 및 1.9 사용)이 원하는 생각 :

select * 
from pricelist 
where START_FREQUENCY >= 0.4 
    and STOP_FREQUENCY <= 1.9 
+0

감사합니다 mu ... dkamins에 대한 내 의견을 참조하십시오. – AssamGuy

+0

@AssamGuy : 하위 쿼리는 단일 결과를 반환해야하거나' '> ='와'<='를 사용하여 컬럼 값과 비교하십시오. 이 쿼리로 무엇을 달성하려고합니까? –

+0

내 편집 된 질문보기 – AssamGuy

1

데이터베이스에서 생성되는 실제 오류를 볼 수 있도록 MySQL 명령 줄 클라이언트 또는 다른 직접 환경에서 쿼리를보십시오.

대부분의 경우 하위 쿼리를 따옴표로 묶어야합니다. 하위 쿼리는 따옴표를 사용하지 않아야합니다.

+0

이 좋아 내가 따옴표를 제거 필요합니까 생각합니다. phpmyadmin의 sql 쿼리에서'# 1242 - Subquery가 2 행 이상을 반환합니다 '라고 말합니다 – AssamGuy