查询在具有最小内存容量的所有PC中具有最快处理器的PC制造商 (20 分)(两种思路+详解)
生活随笔
收集整理的這篇文章主要介紹了
查询在具有最小内存容量的所有PC中具有最快处理器的PC制造商 (20 分)(两种思路+详解)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:題目:
本題目要求編寫SQL語句, 查詢在具有最小內存容量的所有PC中具有最快處理器的PC制造商。
提示:請使用SELECT語句作答。
表結構: CREATE TABLE product ( maker CHAR(20) , --制造商model CHAR(20) NOT NULL, --產品型號type CHAR(20), --產品類型PRIMARY KEY(model) ); CREATE TABLE pc ( model CHAR(20) NOT NULL, --型號speed DECIMAL(6,2), --速度ram INT, --內存hd DECIMAL(6,2), --硬盤容量cd CHAR(4), --光驅price INT, --價錢PRIMARY KEY(model),FOREIGN KEY(model) REFERENCES product(model)二:思路:
1:方式一:從條件到多表聯合
分析:1.先拿內存進行分組,求出最小值 為表1
2.求出最小值的型號是多少 但要注意的是要控制住(其的ram為最小)為表2
3.將product和表2聯合多表查詢
2:方式二:從多表到條件
分析:這里是先將兩個表聯合起來,在根據條件進行篩選!
三:上碼(最后的多表查詢為最終結果)
1:方式一:
--1.求出最小值 取出第一行 select ram,max(speed) from PC group by ram order by ram limit 0,1; -- 2.找出 有最小內存容量的所有PC中具有最快處理器 所對應的型號 select modelfrom pc,(select ram,max(speed) as maxspeed from PCgroup by ram order by ram limit 0,1) as tempwhere pc.speed = temp.maxspeedand pc.ram = temp.ram; --3.多表聯合查詢 select distinct makerfrom product,(select modelfrom pc,(select ram,max(speed) as maxspeedfrom pcgroup by ram order by ram limit 0,1) as tempwhere pc.speed = temp.maxspeed and pc.ram = temp.ram) as awhere product.model = a.model方式2:
select makerfrom pc,productwhere pc.model = product.modeland ram = (select min(ram) from pc)and speed = (select max(speed) from pc where ram = (select min(ram) from pc));四:學習記錄:
方式一第一種做法:
--1.求出最小值 取出第一行 select ram,max(speed) from PC group by ram order by ram limit 0,1; -- 2.找出 有最小內存容量的所有PC中具有最快處理器 所對應的型號 select modelfrom pc,(select ram,max(speed) as maxspeed from PCgroup by ram order by ram limit 0,1) as tempwhere pc.speed = temp.maxspeed--3.多表聯合查詢 select distinct makerfrom product,(select modelfrom pc,(select ram,max(speed) as maxspeedfrom pcgroup by ram order by ram limit 0,1) as tempwhere pc.speed = temp.maxspeed ) as awhere product.model = a.model可以看到我在步驟二中,并未設置 pc.ram = temp.ram,,這樣的后果是控制不住所查詢出來的型號內存為最小,
比如:速度相同均為最快,但其內存不同,speed = 133 ram = 16;speed = 133 ram = 24; 如果不控制ram那么的話就會出現兩個型號
五:總結:
sql語句邏輯性很強,每個人的邏輯不同,寫出來的碼也會不同,那么需要兄弟們,多驗證數據,加油陌生人!!!!!!我們共勉!!!
總結
以上是生活随笔為你收集整理的查询在具有最小内存容量的所有PC中具有最快处理器的PC制造商 (20 分)(两种思路+详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1010 Lehmer Code (35
- 下一篇: vector容器中清空元素(但原来的元素