1
我正在查詢兩個表並將它們連接在一起以人名命名。我試圖製作所有在過去一個月內沒有填寫表格的員工。我遇到的問題是,當人們列出他們的短名字(喬而不是約瑟夫,或邁克而不是邁克爾)時,我正在接受名稱的重疊。即使使用短名稱,我仍然可以如何生成不重疊的人員列表?SQL加入名稱
這是查詢我截至目前:
SELECT DISTINCT ge.employeeNo,
(ge.firstName + ' ' + ge.lastName) AS empName,
ge.email
FROM dbo.hist_Employees ge
INNER JOIN dbo.ctrl_Sites cs ON ge.locationID = cs.ID
WHERE (ge.firstName + ' ' + ge.lastName) NOT IN
(SELECT sc.recordedBy
FROM GRSTOPS.dbo.hist_StopCard sc
INNER JOIN dbo.ctrl_Area a ON sc.area = a.ID
INNER JOIN dbo.ctrl_Site s ON a.site = s.ID
WHERE sc.recorded BETWEEN '10/01/2013' AND '10/30/2013'
AND s.code = 'gre')
AND cs.Abbreviation = 'gre'
AND ge.employmentStatus = 1
AND ge.primaryDept <> 3
我認爲唯一安全的方法是使用唯一的ID。它可能發生,2人的名字是100%相同的。 –
我同意唯一ID是最好的路線,但由於StopCard表是用戶填寫表格,員工不知道他們的員工ID,所以它不是一個可用的選項。 – user2932503
主鍵用於唯一標識表中的每一行。它可以是實際記錄本身的一部分,也可以是人工字段(除了作爲記錄的標識符之外沒有其他含義)。如何設置主鍵是數據庫設計中的一個重要因素,因爲主鍵的選擇會對整個數據庫的性能,可用性和可擴展性產生重大影響。 – user2615302