#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. почему это снаружи? как это может определить количество?