0

ハードコーディングされた値 $1.00 と $2.00 をコードから削除し、定数のテーブルに配置するには、次のステートメントを変更するにはどうすればよいですか?

テーブルsec0306_price_constantsはすでにセットアップされています。min_priceフィールドには 1.00 が含まれ、フィールドmax_priceには 2.00 が含まれます。

  SELECT description
    FROM l_foods
   WHERE price BETWEEN 1.00 AND 2.00
ORDER BY description

そうするためのアプローチを説明してもらえますか?

これはオラクル用です。

4

4 に答える 4

3

多分このようなもの:

SELECT description
FROM l_foods
WHERE (price >= (select min_price from sec0306_price_constants )
AND price <= (select max_price from sec0306_price_constants ))
ORDER BY description
于 2012-09-26T21:54:32.160 に答える
1
declare @constants table (typ varchar(10), minprice float, maxprice float)

insert into @constants values 
('dirtcheap', 0.00, 0.99),
('justright', 1.00, 2.00),
('expensive', 2.01, 10.00)

select description
from   l_foods f, @constants c
where  f.price >= c.minprice and f.price <= c.maxprice
  and  c.typ = 'justright'

クエリの最低値と最高値を変更せずに、さまざまな種類の価格帯で修飾できます。定数の種類を変更するだけです。

于 2012-09-26T21:58:36.657 に答える
0

余分な情報を読んで申し訳ありませんが、テーブルのセットアップがある場合は、次の行に沿って構造化します。

--BEGIN PROC

DECLARE @MINPRICE DECIMAL;
DECLARE @MAXPRICE DECIMAL;

SELECT
    @MINPRICE = min_price,
    @MAXPRICE = max_price
FROM
    sec0306_price_constants;

SELECT description
    FROM l_foods
WHERE 
    price BETWEEN @MINPRICE AND @MAXPRICE
ORDER BY description
于 2012-09-26T21:55:15.490 に答える