【问题标题】:How to join 2 table and return value如何加入2个表并返回值
【发布时间】:2019-09-13 08:45:39
【问题描述】:

我有两张桌子

第一个表:

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()); 

抱歉英语不好

【问题讨论】:

  • 您必须向我们展示您的代码工作,以及您迄今为止所做的尝试。
  • 我尝试了这段代码,但在 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());
  • 为此使用左连接

标签: php codeigniter


【解决方案1】:

你可以使用这个查询

 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());

【讨论】:

    【解决方案2】:
        $this->db->SELECT('table1.order_number,table1.product_id,table2.paid');
        $this->db->FROM('table1');
        $this->db->JOIN('table2', 'table2.order_number = table1.order_number', 'LEFT');
        $query = $this->db->get();
    
        if ($query->num_rows() > 0) {
            return $query->result_array();
        } else {
            return false;
        }
    

    【讨论】:

      猜你喜欢
      • 2019-01-20
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多