php - 如何加入2个表并返回值
问题描述
我有 2 张桌子
第一张表:
id | order_number | product_id
1 | 111111 | 121
2 | 222222 | 343
3 | 333333 | 344
第二张桌子
id | order_number | paid
3 | 111111 | 1
6 | 222222 | 1
我可以获取第一个表中不属于第二个表的所有数据吗?
例子
order_number 333333 不属于第二个表。
使用框架 codeigniter 3 的上述案例的代码如何?
我尝试了下面的代码,但在 2 个表中返回相同的值
$query = $this->db->select('*')
->from('first_tbl')
->join('second_tbl', 'second_tbl.order_number = first_tbl.order_number', 'right')
->get();
var_dump($query->result_array());
抱歉英语不好
解决方案
您可以使用此查询
SELECT t1.* FROM first_tbl AS t1
LEFT JOIN second_tbl AS t2 ON t1.order_number = t2.order_number
WHERE t2.ID IS NULl
它只会返回333333
记录
例如,请参见这个DB fiddle
这就是它在 CI 中的样子:
$this->db->select("t1.*")
$this->db->from("first_tbl AS t1");
$this->db->join("second_tbl AS t2 ", "t1.order_number = t2.order_number", "left");
$this->db->where("t2.id IS NULL");
var_dum($this->db->get()->result());
推荐阅读
- vue.js - 添加到 vue.js 值只是将数字添加到末尾
- cassandra - Cassandra 集合数据类型是否适用于千项?
- node.js - 在nodejs中使用azure blob存储触发器在另一个容器中压缩和写入文件
- r - 创建两个矩阵行的不等维度矩阵的总和
- json - 在invoke-restmethod(JSON正文)中的属性内定义
- r - R - metafor - 在 robust() 函数的输出中不测试主持人
- android - 由于更改包名称而连接到 Firestore 错误(新 Firestore 项目?)
- javascript - 如何在 javascript 中使用与系统时区不同的时区设置日期?
- android - 迁移到 Hilt 后的 KaptExecution
- javascript - 禁用特定变量/函数名称的 no-use-before-define 规则