SELECT host.name, e.name, guest.name
FROM user host
LEFT JOIN event e
ON host.id = e.creator_id
LEFT JOIN event_users eu
ON eu.event_id = e.id
LEFT JOIN user guest
ON guest.id = eu.user_id
RESULT:
host.name | e.name | guest.name
-------------------------------
bob | party | alice
bob | party | bob
1条答案
按热度按时间guykilcj1#
您开始进入关系数据的一些更复杂的方面。最终,您需要将用户/事件订阅存储在第三个表中,通常称为“lookup”或“join”表,或“manytomy”关系。
考虑到以下数据集:
您需要创建第三个表,存储参加聚会的人:
这被称为manytomyne关系,具有许多复杂性,包括如何防止重复(定义索引中同时包含事件id和用户id的唯一索引),以及如何检索正确的数据(更复杂的联接)。
示例连接以检索将要执行的操作: