如何多次连接表和关系表?

时间:2011-04-20 15:29:33

标签: mysql join

我需要在查询中多次加入包含名称的联系人表(联系人),以获取父名和子名。我还需要加入一个具有父子关系的表,以便知道哪个孩子属于哪个父(childs_caregiver)。下面的查询是获取父名和子名,但没有将正确的父项附加到子项 - 它只是运行所有可能的记录。我不知道如何正确加入父子关系表(通过childcaregiverID)。

select c.contactid, ct.contactid,
 c.lastname as 'Parent Last Name', c.firstname as 'Parent First Name', c.address, c.city,
c.state, c.postalcode, c.homephone, c.workphone, ct.lastname as 'Child Last Name', ct.firstname as 'Child First Name'
from contacts c
inner join childs_caregivers cc on c.contactid=cc.caregiverid, 
contacts ct
inner join childs_caregivers cs on ct.contactid=cs.childid,
contacts cts
inner join childs_caregivers cv on cts.contactid=cv.childcaregiverid
where c.caregiver=1

感谢您的期待!

1 个答案:

答案 0 :(得分:0)

您与c加入ctctschilds_caregivers,但彼此不加入。如果多个contact记录之间存在层次关系,则需要在DDL(架构)中表达此关系。为parent_id和“子”记录添加列,指定作为“父”的contact的主键。然后在WHERE语句中将contact表连接在一起。