関係:
- 商品(メーカー、型式、型式)
- ラップトップ(モデル、価格、速度、RAM、HD、スクリーン)
- PC(機種、価格、速度、RAM、HD)
- プリンター(機種、価格、色、価格)
今、一番安いカラープリンターのメーカーを探しています
私のクエリ:
SELECT maker FROM
(SELECT model FROM printer NATURAL JOIN product WHERE printer.color = '1') AS t1
WHERE price < all;
関係:
今、一番安いカラープリンターのメーカーを探しています
私のクエリ:
SELECT maker FROM
(SELECT model FROM printer NATURAL JOIN product WHERE printer.color = '1') AS t1
WHERE price < all;
私はこのように解決しました:
select distinct Pro.maker, Pri.price
from Product Pro join Printer Pri on Pro.model = Pri.model
where Pri.price = (select min(price) from Printer where color = 'y') and Pri.color = 'y'
サブクエリ(select min(price) from Printer where color = 'y')
では、カラー プリンターの価格のみを検索するように指定する必要があります。
このソリューションで気に入らない点は、カラー プリンターのフィルター処理を 2 回行う必要があることです。
(select min(price) from Printer where color = 'y')
... and Pri.color = 'y'
これを2か所で指定する方法はわかりませんが。
SELECT `p.maker`
FROM `product` AS `p`
INNER JOIN printer as pr
WHERE p.model = pr.model
ORDER BY pr.price ASC LIMIT 1
サブクエリを使用すると、次のように解決する必要があります。
select pro.maker from printer pri
natural join product pro
where pri.color = '1'
and pri.price <= all (select price from printer where pri.color = '1')
LIMIT
節がある場合:
select pro.maker from printer pri
natural join product pro
where pri.color = '1'
order by pri.price
limit 1
初心者ですがこんな感じでやってみました
select distinct p.maker, pr.price from
(select maker, model from product)p
inner join
(select model, price from printer where color='y' and price=(select min(price) from
printer where color='y'))pr
on p.model=pr.model
SELECT DISTINCT maker, price
FROM Printer
JOIN Product
ON Product.model=Printer.model
WHERE Printer.color=1
AND Printer.price=
(SELECT MIN(price)
FROM Printer
WHERE color=1)
右。
クエリの結果:
maker price
D 270.0000
select distinct product.maker, price
from printer
join product
on ( product.model=printer.model)
where color='y' and
price = (select min(price) from printer where color='y')
次のクエリを試してください。
Select distinct maker,price from Product
Join Printer on printer.color='y'and Product.model= Printer.model
group by Printer.model
having price = (select min(price) from Printer where color='y')
Mysql では、次のクエリも機能します。
select b.maker, min(a.price) from printer a, product b
where a.color = '1'
and a.model = b.model;
複数のソリューションが存在する可能性があります。以下も機能しています。
Yoはこれを試すかもしれません、
select top 1 t1.maker, t2.price from product t1, printer t2
where t2.color = 'y'
and t1.model = t2.model order by t2.price