如何使用 select 语句显示引用相同外键的 2 个不同外键?
How to use a select statement to show 2 different foreign keys that reference the same foreign key?
我有三个这样的表,
User
id | FName | Lname | Email
---+-------+-------+----------------------
1 | Bob | Jim | Bjim@email.com
2 | Smith | Jane | gjane@email.com
3 | John | Smith | Jsmith@email.com
post
id | description | Title | Postuser
---+---------------------+----------------+----------
1 | A large content | A simple title | 2
2 | Small Content |complex title | 1
Comments
id | Content | Commentuser | CommentPost
---+---------------------+-------------+-------------
1 | A large content | 2 |2
2 | Small Content | 1 |2
Commentuser 和 Postuser 都引用了用户 ID。 Post id 被评论引用Post
对于我的 select 声明,我需要给出第二个 post 的标题、内容和作者的名字、作者的姓氏和作者的电子邮件地址 post 以及在 post 上发表的任何评论内容以及评论作者的名字、姓氏和电子邮件地址,共 2 行
post 的用户与评论的用户不同,所以我 select 如何同时给出名字和姓氏?我在这里看到的其他链式连接不包括这种类型的事情,因为有 3 个表。我得到了
的骨架代码
Select Post.Content, ...
FROM User,...,User AS Author
WHERE ... AND Author.id = ...;
编辑:预期结果
|Content | Title | PostFName | PostLname | PostEmail | Comment Content| Comment Firstname|comment Lastname|
-------------------------------------------------------------------------------------------------------------------------------------
| Small Content |complex title | Bob | Jim | BJim@email.com| A large content| Smith | Jane |
| Small Content |complex title | Bob | Jim | BJim@email.com| A small content| John | Smith |
您可以多次加入用户table;你只需要使用别名来避免歧义:
select p.description, p.title,
pu.fname postfname, pu.lname postlname, pu.email postemail,
c.content commentcontent,
cu.fname commentfname, cu.lname commentlname, cu.email commentemail
from post p
inner join user pu on pu.id = p.postuser
inner join comments c on c.commentpost = p.id
inner join user cu on cu.id = c.commentuser
我有三个这样的表,
User
id | FName | Lname | Email
---+-------+-------+----------------------
1 | Bob | Jim | Bjim@email.com
2 | Smith | Jane | gjane@email.com
3 | John | Smith | Jsmith@email.com
post
id | description | Title | Postuser
---+---------------------+----------------+----------
1 | A large content | A simple title | 2
2 | Small Content |complex title | 1
Comments
id | Content | Commentuser | CommentPost
---+---------------------+-------------+-------------
1 | A large content | 2 |2
2 | Small Content | 1 |2
Commentuser 和 Postuser 都引用了用户 ID。 Post id 被评论引用Post
对于我的 select 声明,我需要给出第二个 post 的标题、内容和作者的名字、作者的姓氏和作者的电子邮件地址 post 以及在 post 上发表的任何评论内容以及评论作者的名字、姓氏和电子邮件地址,共 2 行
post 的用户与评论的用户不同,所以我 select 如何同时给出名字和姓氏?我在这里看到的其他链式连接不包括这种类型的事情,因为有 3 个表。我得到了
的骨架代码Select Post.Content, ...
FROM User,...,User AS Author
WHERE ... AND Author.id = ...;
编辑:预期结果
|Content | Title | PostFName | PostLname | PostEmail | Comment Content| Comment Firstname|comment Lastname|
-------------------------------------------------------------------------------------------------------------------------------------
| Small Content |complex title | Bob | Jim | BJim@email.com| A large content| Smith | Jane |
| Small Content |complex title | Bob | Jim | BJim@email.com| A small content| John | Smith |
您可以多次加入用户table;你只需要使用别名来避免歧义:
select p.description, p.title,
pu.fname postfname, pu.lname postlname, pu.email postemail,
c.content commentcontent,
cu.fname commentfname, cu.lname commentlname, cu.email commentemail
from post p
inner join user pu on pu.id = p.postuser
inner join comments c on c.commentpost = p.id
inner join user cu on cu.id = c.commentuser