2014-11-23 100 views
0

我有2個表,內容如下尋找失蹤僱員薪金錶

`mysql> describe employees; 
+------------+---------------+------+-----+---------+-------+ 
| Field  | Type   | Null | Key | Default | Extra | 
+------------+---------------+------+-----+---------+-------+ 
| emp_no  | int(11)  | NO | PRI | NULL |  | 
| birth_date | date   | NO |  | NULL |  | 
| first_name | varchar(14) | NO |  | NULL |  | 
| last_name | varchar(16) | NO |  | NULL |  | 
| gender  | enum('M','F') | NO |  | NULL |  | 
| hire_date | date   | NO |  | NULL |  | 
+------------+---------------+------+-----+---------+-------+ 
6 rows in set (0.01 sec) 

mysql> describe salaries; 
+-----------+---------+------+-----+---------+-------+ 
| Field  | Type | Null | Key | Default | Extra | 
+-----------+---------+------+-----+---------+-------+ 
| emp_no | int(11) | NO | PRI | NULL |  | 
| salary | int(11) | NO |  | NULL |  | 
| from_date | date | NO | PRI | NULL |  | 
| to_date | date | NO |  | NULL |  | 
+-----------+---------+------+-----+---------+-------+ 
4 rows in set (0.00 sec)` 

如果考慮到每一個員工必須受薪我預計行 的數量在工資表是相同的員工因此員工 中的所有emp_no都在薪水中。但是在執行Count語句時,我會看到下面的結果。

`mysql> select count(*) from employees; 
+----------+ 
| count(*) | 
+----------+ 
| 300024 | 
+----------+ 
1 row in set (0.00 sec) 
mysql> select count(*) from salaries; 
+----------+ 
| count(*) | 
+----------+ 
| 2844047 | 
+----------+ 
1 row in set (0.00 sec) 

這表明,有少數人存在於員工,但薪水缺,所以我做了 下面查詢發現,如果有任何。

`mysql> select * from employees where emp_no not in (select emp_no from salaries) ; 
Empty set (0.96 sec)` 

EMP_NO是主鍵是唯一的,因此爲什麼會出現在兩個表中不同的行數,即使 上述結果返回空集時,我使用不查詢它。

我在僱員中也發現了一些相同的名字,但僱傭日期不同,但emp_no 對他們來說是不同的。

`mysql> select * from employees where first_name='Zvonko' and last_name='Perko'; 
+--------+------------+------------+-----------+--------+------------+ 
| emp_no | birth_date | first_name | last_name | gender | hire_date | 
+--------+------------+------------+-----------+--------+------------+ 
| 20909 | 1961-04-24 | Zvonko  | Perko  | F  | 1990-12-14 | 
| 488633 | 1961-08-01 | Zvonko  | Perko  | F  | 1995-08-08 | 
+--------+------------+------------+-----------+--------+------------+ 

我哪裏錯了?有人能讓我知道嗎?

+0

難道你不覺得「薪水」表中的記錄數量驚人嗎? ) – raina77ow 2014-11-23 17:32:30

+0

2844047> 300024 – fthiella 2014-11-23 17:43:29

+0

我猜想我的錯誤,因爲我誤讀了薪水中的行數。我想我想關閉這個問題。 – Invictus 2014-11-23 17:48:12

回答

1

您的薪水錶比您的員工表有更多的行。大約三百萬對大約三十萬。

工資表有兩部分主鍵,這意味着一個員工可能有多個不同的from_dates工資。你知道,加薪和東西。

+0

這真的很難在評論中閱讀。把它放在你的問題中,而不是相關。 – 2014-11-23 17:38:38

+0

在問題編輯 – Invictus 2014-11-23 17:43:45

+0

我猜我的錯誤,因爲我誤讀了薪水中的行數。我想我想關閉這個問題。 – Invictus 2014-11-23 17:47:37