Re: [SQL ] 高考SQL題目
用你原本寫的去改的,可以應付有多個會員擁有相同最多朋友的情況:
select mId,name,bDate
from Member
where mId in (
select friend
from FriendRelation
group by friend
having count(*) = (
select max(cnt)
from (
select count(*) as cnt
from FriendRelation
group by friend
)
)
)
※ 引述《kisha024 (4545454554)》之銘言:
: : 看過去雖然有四個TABLE,實際語意讓我覺得只用到前兩個?
: : 請問這題有很多小題嗎?
: : member and friend 這兩個table
: : FriendRelation.friend 內容應該會=mid 請問題目有說明嗎?
: : 先找出 FriendRelation.friend 該欄位 最多被記錄的然後回頭查
: : FriendRelation出 mid 然後關連到 member 這樣會寫了嗎?
: : -- ORACLE --
: : SELECT T3.MID, T3.NAME, T3.BDATE, T2.FRIEND
: : FROM (SELECT *
: : FROM (SELECT T.FRIEND, COUNT(*) CNT
: : FROM FriendRelation T
: : GROUP BY T.FRIEND
: : ORDER BY CNT DESC) T1
: : WHERE ROWNUM = 1) T2,
: : Member T3
: : WHERE T3.MID = T2.FRIEND
: : -- MS-SQL --
: : SELECT T2.MID,T2.NAME,T2.BDATE,T1.FRIEND
: : FROM (SELECT TOP 1 FRIEND,COUNT(*) AS CNT
: : FROM FriendRelation
: : GROUP BY FRIEND
: : ORDER BY CNT DESC ) AS T1 ,
: : MEMBERS T2
: : WHERE T1.FRIEND = T2.MID
: : 應該是這樣寫吧 = = 我手邊沒辦法幫你測 囧
: : 另外ORACLE 那段 要回答答案的話 T2.FRIEND
: : AND MS-SQL T2.FRIEND 都要拿掉
: : 因為題目沒有說要顯示這個。
: 謝謝 這題還有另一小題 我沒列出 我原本是寫
: select mId,name,bDate
: From Member
: Where mId in (select friend
: From FriendRelation
: group by friend
: having count(*) = max(count(*))
: )
: 我用mysql測 有語法錯誤 應該是max不能這樣用吧
: 你提供的那兩段用mysql測 也是顯示有語法問題 但語意很清楚了
: THX
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.164.109
討論串 (同標題文章)