0

我们现在正在为一个小型本地网站进行嵌入式 mysql 查询。我想知道如何执行此查询“向用户询问价格并找到价格最接近所需价格的 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 maker, model, speed FROM 
( SELECT model FROM pc NATURAL JOIN product )
WHERE price
BETWEEN value1 AND value2;
于 2012-05-16T15:12:25.067 回答
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 回答