【问题标题】:How do I do multiple unions with select as on codeigniter?如何在 codeigniter 上使用 select as 进行多个联合?
【发布时间】:2019-08-15 14:16:24
【问题描述】:

我正在尝试将以下代码转换为 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 上搜索 unions,但它们只能合并 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  | 

【问题讨论】:

  • 声明$this-&gt;db-&gt;get()在哪里?
  • 我不知道如何使用 union :)

标签: php sql codeigniter


【解决方案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();

【讨论】:

  • 这里 $i 在 for 循环之外。
  • 为什么在外面?它怎么知道计数?
猜你喜欢
  • 2021-01-15
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 2021-06-26
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多