gpt4 book ai didi

php - 在mysql或sqlserver中连接三个具有循环关系的表

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:56 25 4
gpt4 key购买 nike

所以我一直在 NoSQL 数据库和关系数据库之间来回徘徊,我无法解决一些在 NoSql 数据库中很容易解决的问题。所以这是我现在正在努力解决的问题:

我们有一个文章表,里面有文章的信息,用户向系统提交一篇文章。每个用户可以提交多篇文章,但每篇文章只能由一个用户撰写,所以我们这里是一对多的关系。现在应该有用户最喜欢的文章的收藏夹列表,这意味着任何用户都可以拥有许多文章作为他/她最喜欢的文章,并且每篇文章都可以被许多用户收藏(如果这是一个动词)。因此,我们有一个多对多的关系,我们创建了一个名为 favorites 的新表,其中包含 user_idarticle_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或sqlserver中连接三个具有循环关系的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47533536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com