2014-09-23 192 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;