[考題] 101 高考資料庫應用

看板Examination作者 (pinky)時間12年前 (2013/06/12 21:34), 編輯推噓6(607)
留言13則, 7人參與, 最新討論串1/1
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處 出處:如題 假設現有如下有關單車出租管理的需求: ‧可以查詢單車資料,包括廠牌、編號、出廠日期、購入日期、購入金額、尺寸、 種類(如可否變速、淑女車、兒童車、雙人座...)。 ‧可以查詢單車出借的清單,清單中包括租車人姓名、聯絡電話、單車、出租日期、 出租期間(開始及結束的時間)、租金總額。 ‧可以查詢租車人租車清單,包括租車人 姓名(需考慮同姓同名的辨識方式)、 租車日期及期間(需考慮同一人可能於同一天租同一部單車一次以上)。 請使用SQL回應如下的查詢 列出租車記錄超過1次的客戶姓名及聯絡電話 補習班解答是: SELECT 姓名,聯絡電話 FROM 租車人 WHERE 租車人編號IN (SELECT 租車人編號 FROM 單車出租 GROUP BY 租車人編號 HAVING COUNT(*)>1) 請問可以將IN改成EXISTS嗎? IN取出的不是只有一筆嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.27.101.149

06/12 21:39, , 1F
1IN可有多個值,例:欄位 IN ('值1','值2')
06/12 21:39, 1F

06/12 21:55, , 2F
你改成exists也可以 但 in 寫起來比較快一點
06/12 21:55, 2F

06/12 21:56, , 3F
這類型題 你自己用MY SQL建個TABLE SELECT一下就知道了
06/12 21:56, 3F

06/12 21:57, , 4F
還可以搞懂一些疑惑的點
06/12 21:57, 4F

06/12 22:07, , 5F
having count(*)>1可以這樣用嗎? 不需要出現在select?
06/12 22:07, 5F

06/12 22:11, , 6F
having count(*)>1 只是在過濾功能而已 不需要出現在select
06/12 22:11, 6F

06/12 22:11, , 7F
sorry我錯了 強制分組可用
06/12 22:11, 7F

06/12 23:48, , 8F
這題應該可以不用巢狀select
06/12 23:48, 8F

06/12 23:50, , 9F
直接寫 WHERE 租車人編號=單車出租 租車人編號
06/12 23:50, 9F

06/12 23:51, , 10F
再group by 姓名 電話 having count(*)>1 就可以了吧
06/12 23:51, 10F

06/12 23:52, , 11F
這題是要>1如果照你那樣會連只租一次的也會出來
06/12 23:52, 11F

06/12 23:53, , 12F
搞笑了原來還沒打完
06/12 23:53, 12F

06/12 23:54, , 13F
可是 我後面having已經將只租一次的濾掉了阿@@
06/12 23:54, 13F
文章代碼(AID): #1Hk7ZlCJ (Examination)