我正在为联系人设置程序。我想跟踪联系人及他们的电子邮件和电话号码以及他们为哪些公司提供的服务。我不会总是有他们工作的公司,所以我把它设置为:
tblContacts
ContactID
ContactName
ContactPhoneNumber
tblCompanies
CompanyID
CompanyName
tblContactsInCompanies
CICID
CompanyID
ContactID
我做了ContactsInCompanies,因为并非所有的联系人都会分配公司。现在我试图获得他们所在的公司名称的所有联系人,如果它可用,我不能让联接工作。
由于我遇到了这么多麻烦,我想我会问这是不是应该设置的方式(有人建议不同的设置)。如果可以,我如何获得所有联系人列表和公司名称(如果已分配)?我一直试图LEFT JOIN和INNER JOIN但我只是得到一个错误,除非所有人都是INNER JOIN但是它没有显示没有公司的联系人。
答案 0 :(得分:0)
我终于能够得到一个有效的组合。
SELECT Contacts.*, Companies.CompanyName
FROM Companies RIGHT JOIN (Contacts LEFT JOIN ContactsInCompanies ON
Contacts.ContactID = ContactsInCompanies.ContactID) ON
Companies.CompanyID = ContactsInCompanies.CompanyID;
这些总是让我感到困惑。 :(谢谢你的期待。