Re: [考題] 關於資料庫的問題

看板Examination作者 (Awakening)時間12年前 (2013/04/23 19:04), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串2/2 (看更多)
請問以下寫法可以嗎? Select Employee.E_name, E_Salary From Employee, Works_On Where Works_On.E# = Employee.E# Group By Works_On.E# Having count(*)>=3 ; 若有誤請指正, 謝謝! ※ 引述《aPieceOfCake (一塊小蛋糕)》之銘言: : Employee(E#,E_name,E_address,E_salary) : Works_On(E#,P#,hours) : project(P#,P_name) : 問:列出所有做了三個(含)以上的計劃的員工,他們的名字和薪水 : 唐箏的解法: Select E_name,E_salary : From Employee : Whrer E# In : (Select E# : From works_on : Group By E# : Having count(*)>=3 : ); : 函授課程中,他自己說這個解法,在子查詢中少了where條件,要學生自己寫 : 還說不會寫的考不上....我就是那個不會寫的XDD : 有人知道where條件缺什麼嗎? : 是不是少了 Where Employee.E# = works_on.E# ?? : 如果是少了這個,覺得滿疑惑的 : 我自己是覺得 : 子查詢已經可以靠 Group By E# 和 Having count(*) 查詢出誰做了三個以上的計畫 : 並且 Select E# 會顯示出這些人的 E# 給上一層的 where : 如此為什麼還要再子查詢裡面加where條件? : ---------------------------------------------------------------------------- : 或者他的意思是最上層 where 少了條件?? : 請高手解惑 : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.4.45

04/23 19:24, , 1F
這種寫法是最安全的
04/23 19:24, 1F

04/23 19:25, , 2F
一般是不會考慮join的效率問題,況且只有兩個table
04/23 19:25, 2F

04/23 20:17, , 3F
少了 Where Employee.E# = works_on.E#
04/23 20:17, 3F

04/23 20:48, , 4F
GROUP BY的屬性,應該要同時出現在SELECT子句中吧?
04/23 20:48, 4F

04/23 20:51, , 5F
回樓上 不一定要出現於SELECT子句中
04/23 20:51, 5F

04/23 20:53, , 6F
用Groupby只能select group by的東西及聚合函數
04/23 20:53, 6F

04/23 20:55, , 7F
不過這樣寫在mysql似乎也會過
04/23 20:55, 7F
文章代碼(AID): #1HTchGmn (Examination)
文章代碼(AID): #1HTchGmn (Examination)