2014-09-23 152 views
0

不同的專欄中,我有這個表連接兩個表,並顯示在MySQL

表 「分配」 - > NPWP,KPP,駕駛室,nip_ar,KLU - >有31.023的數據

表「masterfile」 - > npwp,kpp,cab,jenis,nama,kota - >有33.631個數據

我想加入這兩個表,所以我可以得到,npwp,kpp,cab,jenis,nama ,kota,nip_ar,klu

當我使用LEFT加入,它處理了很長時間。但是當我使用UNION ALL時,它不能像我想要的那樣工作。

這些我UNION ALL查詢:

SELECT NPWP,KPP,NULL作爲作者,駕駛室,nip_ar,KLU FROM分配GROUP BY NPWP,KPP,駕駛室UNION ALL SELECT NPWP,KPP,駕駛室,JENIS, nama,kota FROM masterfile GROUP BY npwp,kpp,cab;

我剛剛獲得列npwp,kpp,作者,cab,nip_ar,klu。但列詹尼斯,納瑪,科塔沒有顯示。

這些我LEFT JOIN查詢:

SELECT masterfile.npwp,masterfile.kpp,masterfile.cab,masterfile.name,masterfile.address,assign.nip_ar,assign.klu從主文件LEFT JOIN分配ON assign.npwp = masterfile.npwp AND assign.kpp = masterfile.kpp AND assign.cab = masterfile.cab;

我是新手上查詢,請幫我解決這個問題。 非常感謝。

+1

看不出你的'OUTER JOIN'有什麼問題 - 你有連接列上的索引嗎?使用'UNION'與使用'JOINs'完全不同,取決於你想要的結果。 – sgeddes 2014-09-23 02:11:09

+0

是的,你是正確的sgeddes,只需要添加索引,非常感謝你的意見 – DymasSedhayu 2014-09-23 03:07:20

回答

0

謝謝大家,我從我的朋友在聚會聊天的答案,

我的連接查詢是好的,只是必須在列中添加索引NPWP,KPP,CAB兩個表主文件並分配使查詢可以更快地處理。

SELECT masterfile.npwp,masterfile.kpp,masterfile.cab,masterfile.name,masterfile.address,assign.nip_ar,assign.klu FROM主文件LEFT JOIN分配ON assign.npwp = masterfile.npwp並分配。 kpp = masterfile.kpp AND assign.cab = masterfile.cab;