简体   繁体   English

联接多个表一个查询

[英]Join on multiple tables one query

I have 5 tables pages, articles, text, images and videos. 我有5个表格的页面,文章,文本,图像和视频。

My question is how can I get 我的问题是我怎么能

page-(pk)pageId page-(pk)pageId

articles-(pk)articleId,(fk)pageId. 文章-(pk)articleId,(fk)pageId。

SELECT pageTitle, GROUP_CONCAT(articleTitle) 
FROM pages 
JOIN articles ON articles.pageId = pages.pageId 
GROUP BY pageTitle

RESULTS: GOOD 结果:良好

joinPagesArticlesResult to join with: 加入:

articles(pk)articleId 文章(pk)articleId

text-(fk)articleId 文字-(fk)articleId

images(fk)articleId images(fk)articleId

videos(fk)articleId 视频(fk)articleId

SELECT pageTitle, GROUP_CONCAT(articleTitle) AS articleTitle, 
group_concat(textId) AS textId, group_concat(text) AS text, 
group_concat(imageId) AS imageId,group_concat(imageLoc) AS imageLoc , 
group_concat(videoId) AS videoId,group_concat(videoLoc) AS videoLoc 
FROM articles 
JOIN pages ON pages.pageId = articles.pageId  
JOIN text ON text.articleId = articles.articleId
JOIN images ON images.articleId = articles.articleId
JOIN videos ON videos.articleId = articles.articleId
GROUP BY pageTitle

RESULTS: MISSING TYSON1 from GROUP_CONCAT(articleTitle) 结果:GROUP_CONCAT中的TYSON1丢失(文章标题)

joinTextImagesVideos

I want to be able to join all on one table. 我希望能够在一张桌子上全部加入。 As well as get tyson1 to display in query. 以及让tyson1显示在查询中。 Not sure why it's not displaying. 不知道为什么它不显示。 Im not sure if im doing the right type of join, if I need two SELECT statements to get this data, or if im not doing alias correctly. 我不确定我是否在执行正确的连接类型,是否需要两个SELECT语句来获取此数据,或者我是否未正确执行别名。

The columns in each table go as follow 每个表中的列如下

pages: 页面:

页面列

articles: 文章:

文章专栏

text: 文本:

文字栏

images: 图片:

图像列

Videos: 影片:

视频专栏

Try next query that use left join: 尝试使用左联接的下一个查询:

SELECT
    pageTitle,
    GROUP_CONCAT(articleTitle) AS articleTitles,
    GROUP_CONCAT(textId) AS textIds,
    GROUP_CONCAT(text) AS texts,
    GROUP_CONCAT(imageId) AS imageIds
    GROUP_CONCAT(imageLoc) AS imageLocs,
    GROUP_CONCAT(videoId) AS videoIds,
    GROUP_CONCAT(videoLoc) AS videoLocs
FROM
    articles
JOIN
    pages ON pages.pageId = articles.pageId
LEFT JOIN
    text ON text.articleId = articles.articleId
LEFT JOIN
    images ON images.articleId = articles.articleId
LEFT JOIN
    videos ON videos.articleId = articles.articleId
GROUP BY
    pageTitle

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM