0

現在、小規模なローカル Web サイトに対して組み込みの mysql クエリを実行しています。「ユーザーに価格を尋ね、希望価格に最も近い価格の PC を見つけます。PC のメーカー、モデル番号、および速度を出力してください。」

ユーザーから入力された価格に最も近い価格の PC を見つけるにはどうすればよいですか? 私は、製品とPCの間で自然な結合を行う必要があることを知っています.これらの線に沿った何か

SELECT maker, model, speed FROM 
(SELECT * FROM product NATURAL JOIN pc) AS t1 
WHERE price (is close to) '$p';

関係:

product(maker, model, type(pc, printer, laptop))
pc(model, price, speed, ram, hd size)
4

3 に答える 3

1

価格を取得し、入力された価格を差し引くことにより、オフセット変数を作成します。これを絶対(ネガティブなし)にしてから、これで並べ替えて制限します

SELECT product.maker, pc.model, pc.speed, ABS(pc.price - '$p') AS offset FROM pc LEFT JOIN product ON pc.model=product.model ORDER BY offset ASC LIMIT 1
于 2012-05-16T15:18:32.667 に答える
0

あなたは非常に良いスキーマ情報を提供していないので、モデル列でテーブルが結合すると仮定しました。

select p.maker, pc.model, pc.speed
from product p
inner join pc on p.model = pc.model
order by abs(pc.price - '$p')
limit 10

また、比較対象の製品を結果リストから除外する方法がわかりません。おそらく次のようになります。

select p.maker, pc.model, pc.speed
from product p
inner join pc on p.model = pc.model
where pc.model <> '$model'
order by abs(pc.price - '$p')
limit 10
于 2012-05-16T15:15:16.833 に答える