我想知道如何在mysql中连接不同的表。例如,具有各种列的文章表、收藏的文章表、评论表和收藏的评论表。我想在一个页面上列出文章和我最喜欢的评论。我该怎么做?文章列表:
id id_user unique_id
1 1 dhdej4
2 1 sr4r44文章翻译表:
id id_article article lang
1 1 something en
2 2 something en最喜欢的文章列表:
id id_article_favorite id_user_favorite
1 1 1
2 2 1Hashtag表:
id hashtag
1 something
2 something最喜欢的hashtag表:
id id_hashtag_favorite id_user_favorite
1 1 2
2 2 2我想要合并所有这些表,我尝试了一下:
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发布于 2020-10-14 05:31:27
我认为你想要:
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 *;这会使查询的目的更清晰,并让您有机会为名称不唯一的列指定别名。
https://stackoverflow.com/questions/64343417
复制相似问题