Как мне выполнить несколько объединений с помощью select as в codeigniter?

#php #sql #codeigniter

#php #sql #codeigniter

Вопрос:

Я пытаюсь преобразовать следующий код в запрос php codeigniter, но, похоже, у меня ничего не получается.

Этот SQL работает отлично:

 SELECT item_stocks_1 as item_stocks_1 FROM orders WHERE item_id_1 = 7 AND delivery_date = '2019-03-24'
UNION
SELECT item_stocks_2 as item_stocks_2 FROM orders WHERE item_id_2 = 7 AND delivery_date = '2019-03-24'
UNION
SELECT item_stocks_3 as item_stocks_3 FROM orders WHERE item_id_3 = 7 AND delivery_date = '2019-03-24'
UNION
SELECT item_stocks_4 as item_stocks_4 FROM orders WHERE item_id_4 = 7 AND delivery_date = '2019-03-24'
UNION
SELECT item_stocks_5 as item_stocks_5 FROM orders WHERE item_id_5 = 7 AND delivery_date = '2019-03-24'
  

но когда я преобразую это в запрос codeigniter, подобный этому:

 for($i=1;$i<$5;$i  ){
$this->db->select('item_stocks_'.$i as 'item_stocks_'.$i);
$this->db->from('orders');
$this->db->where('item_id_', $filtered_item_id);
$this->db->where('delivery_date', '2019-03-24');
UNION
}
  

это всегда приводит к сбою. я пробовал искать объединения в codeigniter, но они объединяют только 2 таблицы.

Вот как выглядит моя таблица:

 delivery_date  |   item_id_1   |   item_stocks_1  |  item_id_2   |   item_stocks_2  | item_id_3   |   item_stocks_3  | item_id_4   |   item_stocks_4  | item_id_5   |   item_stocks_5  | 
  

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

1. где находится оператор $this->db->get() ?

2. я не знаю, как использовать объединение 🙂

Ответ №1:

используйте групповой запуск для .

 $this->db->select('item_stocks_'.$i as 'item_stocks_'.$i);
$this->db->from('orders');
for($i=1;$i<$5;$i  ){
$this->db->or_group_start();
$this->db->where('item_id_', $filtered_item_id);
$this->db->where('delivery_date', '2019-03-24')->group_end();
}
$this->db->get();
  

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

1. Здесь $i находится за пределами цикла for.

2. почему это снаружи? как это может определить количество?