我有三个表,我需要创建一个视图。表(简化):
网络( 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。非常感谢任何帮助,谢谢!
答案 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