与产品/打印机练习有关的sql连接问题
:与产品/打印机练习有关的sql连接问题,sql,sql-server,Sql,Sql Server,: 产品(制造商、型号、类型) 笔记本电脑(型号、价格、速度、ram、高清、屏幕) PC(型号、价格、速度、ram、高清) 打印机(型号、价格、颜色、价格) 我现在正在寻找最便宜的彩色打印机制造商 我的问题是: select maker, price from product join printer on product.model=printer.model where color='y' and price <= all(select price from printer wh
- 产品(制造商、型号、类型)
- 笔记本电脑(型号、价格、速度、ram、高清、屏幕)
- PC(型号、价格、速度、ram、高清)
- 打印机(型号、价格、颜色、价格)
select maker, price from
product join printer
on product.model=printer.model
where color='y' and price <= all(select price from printer where color='y')
选择制造商,从中选择价格
产品连接打印机
在product.model=printer.model上
其中color='y'和price这应该可以满足您的需求:
SELECT Prd.Maker, Pri.Price
FROM Product Prd
INNER JOIN Printer Pri
ON Prd.model = Pri.model
WHERE Pri.price = (
SELECT MIN(Price)
FROM Printer
WHERE Color = 'Y'
)
AND Pri.Color = 'Y'
尝试使用ALL
会使事情变得过于复杂。只需使用一个简单的子查询返回彩色打印机的最低价格。更简单的方法是使用Top
关键字和order by
来查找具有最低价格的打印机。这将避免子查询
将结果与产品
表联接,以查找制造商
SELECT a.maker,b.price
FROM product a
JOIN(SELECT TOP 1 price,
model
FROM printer
WHERE color = 'y'
ORDER BY price ASC) b
ON a.model = b.model
更新:对于Mysql,请使用此选项
SELECT a.maker,b.price
FROM product a
JOIN(SELECT price,
model
FROM printer
WHERE color = 'y'
ORDER BY price ASC limit 1) b
ON a.model = b.model
结果是正确的,就像我的一样。错误消息仍然是错误的same@Bob错误消息?你在我的查询中收到一条错误消息?你应该在上面加上b.price。即使这样,我也得到了正确的结果,但同样的错误message@Bob实际上,您正在运行此查询的位置。在我使用的
SSMS
中不会出现此错误,我认为它是MySQL 5.5.11、PostgreSQL 9.0和Oracle数据库11g@Bob你能分享这两个表格的样本数据吗。顺便说一句,为什么问题被标记为Sql Server