复杂的SQL连接

时间:2014-05-17 01:45:39

标签: sql postgresql join

我有三个表,我需要创建一个视图。表(简化):

网络( networkid ,名称)

用户(用户ID networkid ,名称)

消息( messageid 用户ID ,收件人,消息,时间戳)

粗体是主键,斜体是外键。

我需要一个视图,消息( messageid ,网络,收件人,用户,消息,时间戳)。

其中network是network.name,recipient是message.recipient,user是user.name,message是message.message,timestamp是message.timestamp

我现在很困惑。从消息表开始创建视图会给我带来麻烦,试图获取network_name,因为它是两个表。我知道消息的user_id,并且从用户我可以获得网络。

我所拥有的,可能可怕的错误(并且不完整)是:

CREATE VIEW messages AS SELECT message.messageid, network.name, message.recipient, nick.nick, message.message, message.time FROM message JOIN nick ON nick.nick_id = message.nick_id

我正在使用PostgreSQL。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:3)

只需使用三个JOINS

CREATE VIEW messages AS
SELECT m.messageid, n.name, m.recipient, u.name, m.message, m.timestamp
FROM message m
    JOIN user u ON m.userid = u.userid
    JOIN network n ON u.networkid = n.networkid