2017-07-09 80 views
0

我在MySql数据库中有两个表叫做con01_objectscon01_object_contacts。它们具有如图所示的外键(con01_objects.id = con01_object_contacts.obj_id)。Mysql一对多连接,行到列

image

正如所看到的,con01_object_contacts表包含CONTACT_TYPE列这将有几个接触类型一个对象及其相应的触点(接触类型:0-数,1幅,2- tolfree ,3-facebook,4-twitter,5-instagram,6-youtube,7-mail)。

我需要的是加入这两个表,这样就不会有重复的对象。我需要一个连接结果,将每个联系人类型显示为一列。如果对于相应联系人类型中的对象没有联系人,则该条目应该为NULL。

++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++

objects --- contype_0(num)---- contype1(WEB)----- contype(tolfree) +++ ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++

OBJ1 ---- ---- 96785445578700 ----- SOMETHING.c0M 45469889

OBJ 2 ---- 55457875748787 ----- - NULL --------------------- 42499898

我试过这个查询,但它返回重复的行,因为一个对象有不同的联系类型。

SELECT * FROM con01_objects LEFT JOIN con01_object_contacts ON con01_objects.id = con01_object_contacts.obj_id

由于预先。

+0

'请点击see' ......除了不包括必要的信息,你的链接是勉强点击。请在您的问题上投入更多时间,并向我们展示您已经尝试过的任何查询。 –

+0

@TimBiegeleisen对不起,请参阅更改 –

回答

0

我认为你正在寻找这样的:

Select distinct(a.jid), 
(SELECT contact FROM con01_object_contacts where contact_type = '0') as contype_0, 
(SELECT contact FROM con01_object_contacts where contact_type = '1') as contype_1, 
(SELECT contact FROM con01_object_contacts where contact_type = '2') as contype_2 
from con01_objects a 
left join con01_object_contacts as b 
on a.id = b.obj_id; 
+0

非常感谢您的帮助,我改变了一下你的查询,我得到了我想要的。 –