Re: [課業] 資料庫NOT EXISTS考題

看板Examination作者 (手牌釘書機)時間9年前 (2015/03/01 17:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #1KyjhfUB (Examination)
文章代碼(AID): #1KyjhfUB (Examination)