【发布时间】:2020-10-15 15:16:04
【问题描述】:
我有三个这样的表,
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
用户 ID 由 Commentuser 和 Postuser 引用。帖子id被commentPost引用
对于我的选择声明,我需要提供第二篇文章的标题、内容、作者的名字、作者的姓氏和该文章的作者电子邮件地址,以及在该文章中创建的任何 cmets 内容cmets 作者的名字、姓氏和电子邮件地址,结果为 2 行
帖子的用户与评论的用户不同,那么我如何选择两者来提供名字和姓氏?我在这里看到的其他链式连接不包括这种类型的东西,因为有 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 |
【问题讨论】:
-
请在问题中包含预期的结果。
-
你的概念是正确的,但是用户,...,用户是一个糟糕的设计,只使用内部连接而不是逗号分隔表
-
要多次加入同一个表,请为每个源使用不同的别名。例如
... FROM User post_user JOIN User commenter.... -
@TheImpaler 我添加了预期的结果
-
请使用正确的
JOIN。它已经存在超过 25 年了!!!
标签: mysql sql join inner-join