使用单个条目连接多个行

时间:2014-07-22 16:21:00

标签: sql database join

目标是将所有相关信息放在一行中。事件表包含各自表中的联系人和位置。关系存储在名为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   #   #

创建连接的哪一步在这里是错误的?

0 个答案:

没有答案