【问题标题】:Codeigniter 3 - Query Builder 'join' Method '!=' operator is not giving expected outputCodeigniter 3 - 查询生成器“加入”方法“!=”运算符未提供预期输出
【发布时间】:2018-05-13 17:53:46
【问题描述】:

不是重复的问题!!!


我正在使用 CodeIgniter 3 - Query Builder ClassMySQLi


数据库中的表:

'category_level_1' 表:

'category_level_2' 表:


model.php中的查询:

$query = $this->db
  ->select('category_level_1.id, category_level_1.category')
  ->from('category_level_1')
  ->join('category_level_2', 'category_level_2.cat_lvl1_id != category_level_1.id', 'inner')
  ->group_by('category_level_1.id')
  ->get();

输出:


内部连接不起作用。


预期输出:


只需要输出“category_level_1”表中与“category_level_2”表无关的记录。


问题:

如上所示,根据 '!=' operator is not working with 'inner,输出值与预期不符' 加入

【问题讨论】:

  • 刚刚快速阅读了这篇文章,虽然我不是 SQL 专家,但使用“不等于”(!=) 连接表似乎很奇怪。我会使用 'equal' (=) 并将条件 category_level_2.cat_lvl1_id != category_level_1.id 放在 where 子句中。
  • 是的,我也试过了。但是,输出不如预期。

标签: codeigniter inner-join codeigniter-3 query-builder codeigniter-datamapper


【解决方案1】:

希望对您有所帮助:

$sql = "SELECT id, category 
        FROM category_level_1
        WHERE id NOT IN (SELECT DISTINCT cat_lvl1_id FROM category_level_2)";
$query = $this->db->query($sql);
print_r($query->result());

输出:

Array
(
    [0] => stdClass Object
        (
            [id] => 93
            [category] => dummy
        )
)

【讨论】:

  • 谢谢。我会尝试这种方式并让你知道:)
  • 它也在工作。谢谢你的努力。对于不了解 CodeIgniter 查询构建器类的人来说,这种方式很好。
【解决方案2】:

我建议您尝试使用leftright joinwhere 子句。试一试:

$query = $this->db
  ->select('category_level_1.id, category_level_1.category')
  ->from('category_level_1')
  ->join('category_level_2', 'category_level_2.cat_lvl1_id = category_level_1.id', 'left')
  ->where('category_level_2.cat_lvl1_id IS NULL')
  ->group_by('category_level_1.id')
  ->get();

【讨论】:

  • 我会尝试并告诉你:)
【解决方案3】:
$query = $this->db ->select('category_level_1.id, category_level_1.category') ->from('category_level_1') ->join('category_level_2', 'category_level_2.cat_lvl1_id <> category_level_1.id', 'inner') ->group_by('category_level_1.id') ->get();

【讨论】:

  • 我会尝试并告诉你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多