看板 Database 關於我們 聯絡資訊
※ 引述《oklp1415 (天生我材)》之銘言: : (針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行) : 資料庫名稱:MySQL : 資料庫版本:9 : 內容/問題描述: : 請列出有經手過「123科技」這位客戶訂單的所有業務員的編號與姓名(業務員的資料不 : 可重複列出)。 : 客戶 : 客戶編號 ----->key : 名稱 : 電話 : 地址 : 訂單 : 訂單編號 ---->key : 客戶編號 ----->外鍵 : 業務員編號 ------>外鍵 : 訂單日期 : 金額 : 業務員 : 業務員編號 ------>key : 姓名 : 地址 : 電話 : 解1: : SELECT DISTINCT 姓名 : FROM 業務員 s, 訂單編號 o, 客戶編號 c : WHERE c.名稱 = '123科技' AND c.客戶編號 = o.客戶編號 AND : o.業務員編號 = s.業務員編號 : 解2: : selcet DISTINCT s.編號,s.姓名 : from 業務員 s : where not exist : ( select * : from 客戶 c : where not exist : ( select * : from 訂單 t : where t.客戶編號=c.客戶編號 AND c.業務編號=s.業務編號 AND : c.名稱 = '123科技')); : 請問這樣的解法都對嗎?? : 我是偏向解2的解法,感覺是要列出全部相關資料的123科技,不知道我想法是否有錯呢? : 感謝!! subselect 九成會跑得比較慢。 個人不會用上面兩種解,寫 ansi join 比較清楚: select distinct sales.編號, sales.姓名 from 訂單 order inner join 業務員 sales on sales.業務編號 = order.業務編號 inner join 客戶 client on client.客戶編號 = order.客戶編號 where client.名稱 = '123科技' -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.0.147.1 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1412062846.A.7EE.html