php - CodeIgniter 两个表与具有可选行的最后一个表连接

标签 php mysql codeigniter

我的数据库中有两个表,它们的组织如下

--> 文章(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/

相关文章:

php - 丢失 6 个字节,但前提是套接字安静 60 秒?

SQL查询语句中的PHP空格错误

javascript - 无需加载页面即可交换内部图库和 HTML

merge - 是否可以合并来自两个 MySQL 服务器的转储?

javascript - 在 PHP 中为 AngularJS 生成 json 数组时出现问题

php - 使用 ORM 创建嵌套关系并最小化查询

php - 如何通过 apache 呈现 .phtml 文件

php - 从 multidim 插入值。使用 PDO 的数组需要很长时间。有没有更好的办法?

mysql - 使用事件记录将一行移动到另一个表但特定列

mysql - 堆叠式 SQL 查询错误和并发症