Как объединить 2 таблицы и вернуть значение

#php #codeigniter

#php #codeigniter

Вопрос:

У меня есть 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
  

Могу ли я взять все данные из первой таблицы, которые не принадлежат второй таблице?

пример

порядковый номер 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()); 
  

извините за плохой английский

Комментарии:

1. Вы должны показать нам свои усилия в написании кода, то, что вы пробовали до сих пор.

2. я пробую этот код, но возвращаю то же значение в 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());

3. используйте левое соединение для этого

Ответ №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;
    }