2016-10-20 21 views
1

使用其他表的列我有一個表命名tbl_employer如何在mysql中

| id | employer | emp_type | 
| 1 | aaa | GOVERNMENT | 
| 2 | bbb | PRIVATE | 

我想這個表tbl_remit加入它,因爲tbl_remit的數據

|RemitNo| id | employer | emp_cat |Amt_Remit| AP_From | AP_To | 
| 1 | 1 | aaa | GOVERNMENT | 20.00 |01/01/2016|01/31/2016| 
| 2 | 1 | aaa | GOVERNMENT | 10.00 |02/01/2016|02/29/2016| 
| 3 | 1 | aaa |   | 10.00 |03/01/2016|03/31/2016| 
| 4 | 2 | bbb | PRIVATE | 50.00 |01/01/2016|01/31/2016| 
| 5 | 2 | bbb | PRIVATE | 50.00 |02/01/2016|02/29/2016| 
| 6 | 2 | bbb |   | 50.00 |03/01/2016|03/31/2016| 

我想填充柱根據tbl_employer填寫tbl_remit中缺失的數據。

|RemitNo| id | employer | emp_cat |Amt_Remit| AP_From | AP_To | 
| 1 | 1 | aaa | GOVERNMENT | 20.00 |01/01/2016|01/31/2016| 
| 2 | 1 | aaa | GOVERNMENT | 10.00 |02/01/2016|02/29/2016| 
| 3 | 1 | aaa | GOVERNMENT | 10.00 |03/01/2016|03/31/2016| 
| 4 | 2 | bbb | PRIVATE | 50.00 |01/01/2016|01/31/2016| 
| 5 | 2 | bbb | PRIVATE | 50.00 |02/01/2016|02/29/2016| 
| 6 | 2 | bbb | PRIVATE | 50.00 |03/01/2016|03/31/2016| 

我使用了一個聯接聲明,但失敗了。

SELECT r.RemitNo 
    , r.id 
    , r.employer 
    , (SELECT e.emp_type 
      FROM tbl_employer e 
     WHERE e.ID = r.ID) emp_cat 
    , amt_remit 
    , ap_from 
    , ap_to 
    FROM tbl_remit r 
    JOIN tbl_employer e 
    ON r.ID = e.ID 
+2

因爲你要修改的表,則需要一個'UPDATE'查詢。 – 1000111

+0

你需要更新查詢...「更新tbl_remit設置emp_cat =(選擇tbl_employer從tbl_employer EMP_TYPE其中tbl_employer ID = tbl_remit.id。)」 – Darshana

回答

2

可能,這將幫助:

UPDATE tbl_remit AS r 
JOIN tbl_employer AS e ON e.employer=r.employer  
SET r.emp_cat=e.emp_type 

有想法,如果你有表中多條記錄,你可能需要對僱主字段表添加INDEX。我真的不能100%肯定,如果r.id等於e.id和可用於JOIN,但如果它是確定,那麼你可以使用此查詢:

UPDATE tbl_remit AS r 
JOIN tbl_employer AS e ON e.id=r.id 
SET r.emp_cat=e.emp_type 

您的問題未能查詢應是這樣的:

SELECT r.RemitNo 
, r.id 
, r.employer 
, e.emp_type 
, r.amt_remit 
, r.ap_from 
, r.ap_to 
FROM tbl_remit r 
JOIN tbl_employer e 
ON r.ID = e.ID 
+0

不大 - 在MySQL中,你必須參加之前設定和MySQL將拋出,如果一個警告你不提供where子句。 –

+0

對不起,修正了它。謝謝。是的,它會拋出警告,但會執行查詢。 – krasipenkov

+0

感謝您提供所有解決方案。我想創建另一個表來結合它,我從來沒有想過只是更新tbl_remit。我會讀更多關於mysql查詢。和索引。再次感謝。 – Clorae

0

你需要更新查詢

更新tbl_remit設置emp_cat =(。選擇tbl_employer EMP_TYPE從 tbl_employer其中tbl_employer ID = tbl_remit.id)