我已经看到很多示例将多个表连接回一个主表,但这个查询不同之处在于级联。MySQL加入3个级联表
我有3个表类似于下面的(简化为便于):
**CONTACTS**
--------------------------------------------
Cid name
--------------------------------------------
1 John
2 Peter
3 Karl
**OPPORTUNITIES**
--------------------------------------------
Oid Cidlink title
--------------------------------------------
1 2 php lookup script
2 2 php facial recognition
3 3 html email template
4 1 javascript verification
**ATTACHMENTS**
--------------------------------------------
Aid Oidlink attachment
--------------------------------------------
1 3 received enquiry
2 3 header and footer done
3 3 pixel trace image done on server
4 2 database structure done
5 2 html get form done
正如你所看到的,附件链接回的机会和机遇涉及到的联系人。除了通过商机表以外,附件不直接链接到联系人。
我需要创建一个记录集,包括所有3个表中的字段,并且挣扎着。
SELECT CONTACTS.*, OPPORTUNITIES.*, ATTACHMENTS.*
FROM ATTACHMENTS
INNER JOIN OPPORTUNITIES
ON CONTACTS.Cid = OPPORTUNITIES.Cidlink
INNER JOIN ATTACHMENTS
ON OPPORTUNITIES.Oid = ATTACHMENTS.Oidlink
ORDER BY ****whatever****
我结束了还是我接近这个错误的方式?
为什么你有附件列出两次?第一个人不应该是“联系人”吗? (是的,这是关闭假设一个记录必须在所有3个表中,你需要它。)否则你需要使用OUTER连接。 – xQbert
如果您不使用LEFT加入,John将被排除在外,因为他没有附件机会。通过使用LEFT Join,你可以包括John的机会,没有附件。 (请注意,在这些问题中发布预期结果有助于我们更好地理解您的想法,并考虑在未来发布的信息中包含预期结果!)它有助于说明您试图达成的目标。 – xQbert