目标是将所有相关信息放在一行中。事件表包含各自表中的联系人和位置。关系存储在名为eventrelation的表中,其中有父(事件)和子(联系人,位置)引用。
表格如下:
1. event : id ...
2. contact : id ...
3. location : id ...
eventrelation : pid | cid | p_type | c_type
pid = foreign key (event.id)
cid = id of contact or location
p_type && c_type are type of data shown as no above
i.e. 1:event, 2:contact, 3:location
所有相关联系人&与一个事件相关的位置信息可以在与该事件相同的行中返回。为此,我尝试了以下查询(有错误)
SELECT E.ID, C.ID, L.ID
FROM EVENT E
LEFT OUTER JOIN EVENTRELATION ER ON E.ID=ER.PID
LEFT OUTER JOIN CONTACT C ON ER.CID=C.ID AND ER.C_TYPE=2
LEFT OUTER JOIN LOCATION L ON ER.CID=L.ID AND ER.C_TYPE=3
表包含以下数据(例如用途)
EVENT CONTACT LOCATION
ID ID ID
1 1 1
2 2
3
EVENTRELATION DATA
P | C | PT | CT
1 1 1 2 --> event1 with contact1
1 1 1 3 --> event1 with location1
2 1 1 2 --> event2 with contact1
查询的结果是:
RESULT
E | C | L
1 1 #
1 # 1
2 1 #
3 # #
我在单行中获取联系人和位置时出错,而在当前示例中,它们作为不同的行出现。理想的结果应该是:
RESULT
E | C | L
1 1 1
2 1 #
3 # #
创建连接的哪一步在这里是错误的?