關於資料庫的問題 - 考試

Table of Contents

請問以下寫法可以嗎?

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 少了條件??
: 請高手解惑
: 謝謝

--

All Comments

Audriana avatarAudriana2013-04-27
這種寫法是最安全的
Barb Cronin avatarBarb Cronin2013-04-30
一般是不會考慮join的效率問題,況且只有兩個table
Brianna avatarBrianna2013-04-30
少了 Where Employee.E# = works_on.E#
Frederica avatarFrederica2013-05-01
GROUP BY的屬性,應該要同時出現在SELECT子句中吧?
Ina avatarIna2013-05-03
回樓上 不一定要出現於SELECT子句中
Lily avatarLily2013-05-04
用Groupby只能select group by的東西及聚合函數
Caroline avatarCaroline2013-05-05
不過這樣寫在mysql似乎也會過