2012-07-23 102 views
2

我有兩張桌子。例如第一個表是父表,即包含deptno(主鍵)和deptname的部門,另一個表是子表,即包含empid,empname, sal和(外鍵)的僱員。我想加入這兩個表格,以獲得像deptname這樣的輸出以及在特定部門工作的員工數量。我嘗試使用聯接,視圖,遊標,子查詢,組子句等進行查詢。我可以使用group by子句獲得半數查詢的解決方案,以找出特定部門下的員工數量,但無法計算它出了另一半。我怎樣才能加入這兩張桌子?

部門

deptno deptname 
101  sales 
102  hr 
103  finance 

員工

empid empname sal deptno 
    1  john 1500$ 101 
    2  kevin 1000$ 101 
    3  james 1200$ 101 
    4  ford 700$  102 
    5  david 855$  102 
    6  george 955$  103 

我想用一個SQL查詢,顯示如下表。

deptname no.of employees 
sales   3 
hr    2 
finance   1 

回答

0

請嘗試下面的代碼。

select COUNT(*) from tblEmp E inner join tblDept d on d.Deptid=l.Deptid 

希望這能解決您的問題。

+0

這並沒有2列,只是一個單一的計數取得預期的結果。 – 2012-07-23 09:10:02

+0

我只是告訴方式做這個休息它取決於人多少列他想從表中獲得.. – 2012-07-23 09:13:16

1

希望這有助於

Select deptname, count(1) no_employees 
From table1 t1 
Join table2 t2 on t1.deptno = t2.deptno 
Group By deptname 
Order By Count(1) desc 
+0

謝謝,它的工作。 – 2012-07-23 10:52:24

0

試試這個

select d.deptname,COUNT(*) [no.of employees] 
from employee E join department D 
on E.deptno=D.deptno 
group by d.deptname 
order by COUNT(*) 
+0

感謝您的幫助。 – 2012-07-23 11:29:00

1

SELECT t1.deptname AS DEPTNAME,COUNT(1) 「沒有。員工的」 FROM表1 T1 JOIN表2 T2在T2 .deptno = t1.deptno GROUP BY t1.deptno;

您可以通過執行以下重新創建此:

mysql> 
mysql> CREATE TABLE table1 (deptno INT NOT NULL, deptname VARCHAR(24) NOT NULL, PRIMARY KEY (deptno)); 
Query OK, 0 rows affected (0.01 sec) 

mysql> CREATE TABLE table2 (empid INT NOT NULL, empname VARCHAR(48) NOT NULL, sal VARCHAR(16), deptno INT); 
Query OK, 0 rows affected (0.01 sec) 

mysql> INSERT INTO table1 VALUES (101, "sales"), (102, "hr"), (103, "finance"); 
Query OK, 3 rows affected (0.00 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> INSERT INTO table2 VALUES (1, "John", "1500$", 101); 
Query OK, 1 row affected (0.01 sec) 

mysql> INSERT INTO table2 VALUES (2, "Kevin", "1200$", 101), (3, "James", "1000$", 101); 
Query OK, 2 rows affected (0.00 sec) 
Records: 2 Duplicates: 0 Warnings: 0 

mysql> INSERT INTO table2 VALUES (4, "Ford", "700$", 102), (5, "David", "855$", 102), (6, "George", "955$", 103); 
Query OK, 3 rows affected (0.00 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> SELECT t1.deptname AS deptname, COUNT(1) AS "no. of employees" FROM table1 t1 JOIN table2 t2 ON t2.deptno = t1.deptno GROUP BY t1.deptno; 
+----------+------------------+ 
| deptname | no. of employees | 
+----------+------------------+ 
| sales |    3 | 
| hr  |    2 | 
| finance |    1 | 
+----------+------------------+ 
3 rows in set (0.00 sec) 

mysql> 
+0

非常翔實!謝謝。 – 2012-07-23 11:06:25

+0

Kevin,如果接受,請點擊答案左邊的複選標記。此外,如果非常有用,您也可以單擊其左側的「向上箭頭」。謝謝,很高興幫助。祝你的項目好運。 – 2012-07-23 17:31:04