Re: [課業] 資料庫 SQL 語法

作者: kisha024 (4545454554)   2018-04-20 09:51:56
※ 引述《think12381 ()》之銘言:
: 請問一下各位 在寫SQL語法考題和解答寫得不一樣 要怎麼斷定是否寫對?
: 應該很難跟解答 完全一致吧 或著說
: "如果自己錯 錯在哪邊?"
: 舉例來說
: 工程師(編號, 姓名, 年齡, 性別 , 薪水) PK 編號
: 產品(代號 , 名目 , 年銷售量 , 售價) PK 代號
: 設計(編號,代號) PK 編號 代號
: 針對銷售量 20萬隻的產品 餐與設計此產品的工程師 不超過五人 列出此產品
: 名目和工程師平均薪水
: 我這邊寫法是
: select 產品.產品名目 , avg(工程師.薪水)
: from 產品
: where 產品.代號 in //重產品代號去找
: (
: select 設計.代號 //找到 設計當中有一個連接
: from 設計 , 工程師 //要串工程師的資訊
: where 設計.編號 = 工程師.編號 and // 把編號和工程是串起來
: 產品.代號 = 設計.代號 and // 把產品和設計 串起來
: group by 產品.產品名目 //框起來 產品名目 對其開頭 select
: having 產品.年銷售量 < 200000 and
: sum(工程師.編號) <=5
: ) ;
: 不知道這樣寫對不對?
我認為不對
對非訓練有素的考生或有點實務經驗的人來說 我覺得這有點難
你可能要裝個SQL SERVER 或 MYSQL 之類的軟體來練習 才會比較有感覺
下面是其中一種寫法 給你參考
select A.名目,AVG(C.薪水)'平均薪水' from 產品 A
inner join 設計 B on A.代號=B.代號
inner join 工程師 C on B.編號=C.編號
where A.年銷售量 >= 200000
and A.代號 in
(select 代號 from 設計
group by 代號
having count(*) <=5)
group by A.代號,A.名目
作者: p19101910 (Sky)   2018-04-21 10:40:00
的確有不只一種作法,順便問一下:inner join借問:樓主的inner join ,若改成 用 where 的 equi-join,是否比較簡潔 易寫易懂?

Links booklink

Contact Us: admin [ a t ] ucptt.com