我的数据库中有两个表,它们的组织如下
--> 文章(ArticleID,UserID,ArticleCategory,ArticleTitle,ArticleBody,ArticleIsActive)
--> ArticleImages(ArticleImageID,ArticleID,ArticleImageExtension)
场景:
=> 用户想要发布一篇文章,用户可以选择发布带有/不带有多张图片的文章,当用户发布包含多张图片的文章时,文章详细信息存储在 Articles 表中,图片名称和扩展名是与articleID一起存储在ArticleImages表中作为引用
问题:
=> 当用户发布没有图片的文章时,发布数据存储在 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 表中的图像。
任何帮助将不胜感激!
最佳答案
将连接语句更改为:
$this->db->join('CI_Article_Images_Tbl', 'CI_Articles_Tbl.roflArticle_ID = CI_Article_Images_Tbl.roflArticle_ID', 'left');
在末尾添加 left 以创建一个 MySQL 左连接,它将包括来自 CI_Articles_Tbl 的所有结果和来自 CI_Article_Images_Tbl 的结果(如果可用的话),这与默认的内部连接不同,默认的内部连接只返回同时存在于两个表中的结果。
了解 MySQL 中连接的一个很好的指南可以在以下位置找到:http://www.sitepoint.com/understanding-sql-joins-mysql-database/
关于php - CodeIgniter 两个表与具有可选行的最后一个表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399941/