Re: [課業] 資料庫NOT EXISTS考題
※ 引述《Sunofgod ( )》之銘言:
: ※ 引述《bestbestbest (思維)》之銘言:
: : 資料表:
: : 集會事件(事件編號,事件地點,開始日期,結束日期,估計人數,判定違法)
: : 涉案者(涉案者號,姓名,事件編號,移送日期)
: : 問題:
: : 請找出在資料庫中參與了每一個被判定違法集會的人(列出涉案者號,姓名)
: : 這題應該會使用到NOT EXISTS,想請問上面這題如何解答?
: : 如果不使用NOT EXISTS解的話有其他方式解嗎?
: 等同找出所有不存在一個違法集會是沒有參與的人
: 不是很確定內層的NOT EXISTS是不是這樣寫 有錯煩請指正
: select P1.涉案者號,P1.姓名
: from 涉案者 P1
: where NOT EXISTS (
: select *
: from 集會事件 E
: where 判定違法=是 AND
: NOT EXISTS(
: select *
: from 涉案者 P2
: where E.事件編號=P2.事件編號 and P1.涉案者號=P2.涉案者號
: )
: )
: 記得老師說過NOT EXISTS寫得出的用NOT IN一定也可以
: 不過用NOT EXISTS就已經沒把握是對的所以就不獻醜了...
下面是我試寫一段不用not exists的語法,
寫的有點鳥,但運行出來是正確的,可以參考看看!
SELECT 涉案者號
FROM 涉案者 A
WHERE EXISTS --先查這些人,他們參與的事件是不是違法集會
(
SELECT *
FROM 集會事件 B
WHERE A.事件編號=B.事件編號
AND B.判定違法='Y'
)
GROUP BY 涉案者號 --group by 後,可知道涉案者的違法集會總數
HAVING COUNT(1)= --若涉案者的違法集會總數=集會事件中的違法總數
(
select COUNT(1) --查總共違法集會的件數
FROM 集會事件
WHERE 判定違法='Y'
)
ORDER BY 1
--
笑一個吧!寫程式也別忘了微笑,
萬一今天沒人對你微笑——我來對你笑....
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.244.165.86
※ 文章網址: https://www.ptt.cc/bbs/Examination/M.1425201897.A.78B.html
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):