我的数据库中有两个表,按照以下方式组织
- >文章(条款ArticleID,用户ID,ArticleCategory,ArticleTitle,ArticleBody,ArticleIsActive)
- > ArticleImages(ArticleImageID,条款ArticleID,ArticleImageExtension)
情境:
=>用户想要发布文章,用户可以选择发布带有/不带多个图像的文章,当用户发布带有多个图像的文章时,文章详细信息存储在Articles表中,图像名称和扩展名存储在ArticleImages表中使用articleID作为参考
问题:
=>当用户发布没有图像的文章时,帖子数据存储在Articles表中,但由于没有图像,因此ArticleImages表中没有存储数据,所以当我遍历我的文章页面上的所有数据时,我使用此查询
public function getAllHomeArticles(){
$this->db->select('*');
$this->db->from('CI_Articles_Tbl');
$this->db->join('CI_Article_Images_Tbl',
'CI_Articles_Tbl.roflArticle_ID =
CI_Article_Images_Tbl.roflArticle_ID');
$this->db->group_by('CI_Articles_Tbl.roflArticle_ID');
$query = $this->db->get();
return $query->result_array();
}
我使用ArticleID作为连接选项加入两个表,问题是,在ArticleImages表中没有图像,我无法显示那些没有图像的文章,显示所有文章的最佳方法是什么? ArticleImages表中的图像。
任何帮助都将受到高度赞赏!
答案 0 :(得分:1)
将join语句更改为:
$this->db->join('CI_Article_Images_Tbl', 'CI_Articles_Tbl.roflArticle_ID = CI_Article_Images_Tbl.roflArticle_ID', 'left');
在末尾添加左侧以进行MySQL左连接,其中包括来自CI_Articles_Tbl的所有结果以及来自CI_Article_Images_Tbl的结果,这与默认内部联接不同,默认内部联接仅在两个表中都存在时返回结果。
可以在以下位置找到理解MySQL连接的良好指南:http://www.sitepoint.com/understanding-sql-joins-mysql-database/