首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并表MySql

问合并表MySql
EN

Stack Overflow用户
提问于 2020-10-14 05:27:58
回答 1查看 33关注 0票数 0

我想知道如何在mysql中连接不同的表。例如,具有各种列的文章表、收藏的文章表、评论表和收藏的评论表。我想在一个页面上列出文章和我最喜欢的评论。我该怎么做?文章列表:

代码语言:javascript
复制
id   id_user        unique_id
1    1              dhdej4      
2    1              sr4r44

文章翻译表:

代码语言:javascript
复制
id   id_article     article     lang
1    1              something   en   
2    2              something   en

最喜欢的文章列表:

代码语言:javascript
复制
id   id_article_favorite   id_user_favorite
1    1                     1   
2    2                     1

Hashtag表:

代码语言:javascript
复制
id        hashtag
1         something  
2         something

最喜欢的hashtag表:

代码语言:javascript
复制
id   id_hashtag_favorite    id_user_favorite
1    1                      2   
2    2                      2

我想要合并所有这些表,我尝试了一下:

代码语言:javascript
复制
SELECT * 
  FROM article a
  JOIN article_translation t
    ON a.id = t.id_article 
  JOIN favorite_article fa
    ON fa.id_article_favorite = t.id_article 
  JOIN hashtag h
  JOIN favorite_hashtag fh
    ON fh.id_favorite_hashtag = h.id 
 WHERE fa.id_user_favorite = 1
   AND t.lang = 'en'
   AND fh.id_user_favorite = 1
EN

回答 1

Stack Overflow用户

发布于 2020-10-14 05:31:27

我认为你想要:

代码语言:javascript
复制
select * 
from article a
inner join article_translation at on at.id_article          = a.id
inner join favorite_article fa    on fa.id_article_favorite = a.id
inner join comment c              on c.id_article_comment   = a.id
inner join favorite_comment fc    on fc.id_comment_favorite = a.id 
where fa.id_user_favorite = 1 and at.lang = 'en'

我尝试修复表之间的连接条件。据推测,所有的表都通过外键约束与article相关。您可能希望根据您的实际模式来检查它。

我还添加了表别名,这使得查询更易于写入和读取。

我建议您在select lause中枚举所需的列,而不是使用select *;这会使查询的目的更清晰,并让您有机会为名称不唯一的列指定别名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64343417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档