【发布时间】:2011-10-23 11:42:35
【问题描述】:
我有 2 张桌子:
Attendee(AttendeeId integer PRIMARY KEY, LastName, FirstName, etc...)
Company(CompanyId integer PRIMARY KEY, CompanyName, etc ...)
以及它们之上的多对多关系:
CompanyAttendeeRelation
(
CompanyId integer REFERENCES Company (CompanyId),
AttendeeId integer REFERENCES Attendee (AttendeeId),
PRIMARY KEY (CompanyId, AttendeeId)
);
因此,根据上述情况,一家公司可以有多个与会者,并且一名与会者可以在多个公司中。
但是,我已经尝试过,例如:
SELECT (LastName || " " || FirstName) as AttendeeName,
CompanyAttendeeRelation.AttendeeId,
CompanyAttendeeRelation.CompanyId
FROM Attendee join CompanyAttendeeRelation on CompanyAttendeeRelation.AttendeeId = Attendee.AttendeeId join Company on CompanyAttendeeRelation.CompanyId = Company.CompanyId
GROUP BY LastName;
但我没有让所有公司都参加。也就是说,例如,假设有AttendeeId = 15 的与会者有一个有CompanyId = 20 的公司和另一个有CompanyId = 100 的公司,我希望得到:
Doe John|15|20
Doe John|15|100
但我只得到:
Doe John|15|100
所以我不确定是否是 JOIN 在第一场比赛中停止,而第二场比赛永远不会被计算,或者是否某个地方重复(在本例中为 AttendeeId)被忽略。
有什么想法吗?
【问题讨论】: