0

いくつかの浮動値を比較したいと思います。行うには、私のクエリは次のようなものです:

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では、「クエリを実行できません」と表示されます。私が間違っているところは?助けてください

編集 :

との2つのフィールドがあるテーブルがありSTART_FREQUENCYますSTOP_FREQUENCY。周波数範囲内にあるすべての値を抽出しようとしています。たとえば、

  START_FREQUENCY STOP_FREQUENCY
1            0.4            0.9
2            0.5            1.4
3            0.8            1.9

ユーザーが入力すると、、、start frequency = 0.4 and stop frequency = 1.9の結果が表示されます。Row1Row2Row3

4

2 に答える 2

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
于 2011-10-21T05:47:06.350 に答える
1

MySQLコマンドラインクライアントまたは別のより直接的な環境でクエリを試して、データベースによって生成されている実際のエラーを確認してください。

ほとんどの場合、サブクエリの前後に引用符を使用することに関係していますが、そこにあるべきではありません。

于 2011-10-21T05:46:11.480 に答える