所以我一直在 NoSQL 数据库和关系数据库之间来回徘徊,但我无法解决一些在 NoSql 数据库中很容易解决的问题。这就是我现在正在努力解决的问题:
我们有一个文章表,其中包含文章信息,用户将向系统提交文章。每个用户可以提交多篇文章,但每篇文章仅由一个用户撰写,因此我们这里有一对多的关系。现在应该有一个用户最喜欢的文章的收藏夹列表,这意味着任何用户都可以有很多文章作为他/她最喜欢的文章,并且每篇文章都可以被许多用户收藏(如果这是一个动词)。因此,我们有一个多对多的关系,我们创建一个名为 favorites 的新表,其中 user_id
和 article_id
作为列。以下是我当前对具有循环关系的表的设计的总结。
用户:
id | name
----------
文章:
id | title | text | user_id | //here user_id is the writer of the article
-----------------------------
收藏夹:
id | user_id | article_id | //here user_id the id of the user
--------------------------- //who favorited the article that article_id
//that article_id points to
所以我现在要查询的是一个结果表,它将为我提供用户最喜欢的文章的有关文章本身的信息、其作者信息以及该最喜欢的项目所属的用户的信息。像这样的事情:
userName | favoriteArticleTitle | favoriteArticleText | favoriteArticleWriter
-----------------------------------------------------------------------------
因为第一列中的用户和最后一列中的用户来自同一个表,所以我无法想出一种方法来连接这三个表并获取 user.name
列而不导致含糊不清。
所以我的问题是如何才能达到我想要的结果(如果可能的话)?l
最佳答案
只需为 SELECT
中的列添加别名
SELECT [userName] = u.name
, [favoriteArticleTitle] = a.title
, [favoriteArticleText] = a.text
, [favoriteArticleWriter] = au.name
FROM users u
INNER JOIN favorites f ON u.id = f.user_id
INNER JOIN articles a ON f.article_id = a.user_id
INNER JOIN users au ON a.user_id = au.id
关于php - 在 mysql 或 sql server 中连接三个具有循环关系的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47533536/