2013-02-26 68 views
2

的專欄中,我不能完全得到我周圍的SQL查詢的頭,因爲它不是我的專長。我試圖選擇僱員表中id的行的名稱出現在另一個表accounts的列salesPersonId中。也就是說,在帳戶表中表示的任何員工姓名。選擇行標識的出現在另一個表

ACCOUNT 
+----+---------------+ 
| id | salesPersonID | 
+----+---------------+ 
| 0 |  1020  | 
+----+---------------+ 
| 1 |  1020  | 
+----+---------------+ 
| 2 |  1009  | 
+----+---------------+ 


EMPLOYEE 
+------+---------------+ 
| id | firstName | 
+------+---------------+ 
| 1009 |  BILL  | <-select his name 
+------+---------------+ 
| 1020 |  KATE  | <-select her name 
+------+---------------+ 
| 1025 |  NEIL  | <-not this guy 
+------+---------------+ 

由於Neil在account.salesPersonID中沒有任何存在,我想選擇除他以外的其他兩個人。儘管如此,我還沒有做出太多的努力,並尋求一些意見。

SELECT * FROM employee e 
LEFT JOIN account a 
ON a.salesPersonID = e.id 
WHERE (SELECT COUNT(salesPersonID) FROM account) > 0 

不起作用。我想知道如何選擇salesPersonID中的這些員工姓名。謝謝。

回答

4

試試這個:

SELECT Distinct e.firstName 
FROM employee e 
JOIN account a ON a.salesPersonID = e.id 

JOIN將採取過濾的照顧,以確保您只返回存在兩個表中的記錄。

Distinct將確保你每firstName值一次只得到。您還可以通過分組通過完成這個employee.Idemployee.firstName(憑身份證分組是更​​好的策略,如果你想返回一行對每個唯一的員工,即使他們有相同的名字,其上進行分組firstName或使用distinct是當你只是希望每一個獨特的名字之一,即使該名稱是由一個以上的員工使用)

+0

哇,太棒了。非常感謝!如果我有不止一個凱特,我仍然不太瞭解如何組隊。 – 1252748 2013-02-26 20:34:48

+2

如果您有多個凱特,並且您只想爲每個唯一名稱顯示一行,那麼'Group By e.firstName '。如果您想爲每位唯一員工顯示一行,即使員工擁有相同的姓名,也可以使用「Group By e.Id」。 – 2013-02-26 20:36:08

+0

'SELECT不同e.firstName FROM員工e JOIN帳戶a ON a.salesPersonID1 = e.id Group By e.Id'給我錯誤:'錯誤:列'employee.FirstName'在選擇列表中無效 因爲它不是在聚合函數 或GROUP BY clause.'包含:/ – 1252748 2013-02-26 20:50:21

0

u能有這樣的查詢....

從EMPLOYEES1 E選擇e.firstname左連接帳戶on(e.id = a.salespersonid) 其中e.id = a.salespersonid group by e.firstname

結果:

姓 法案 凱特

相關問題