#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;
}