我正在尝试将php mysql语句转换为Codeigniter语法。代码从db中选择全部,但区域差异等于从彼此减去的两个表单输入。非常感谢任何帮助。
PHP版
select * from zone_cost where zone_diff =
@(
(select zone from station_zone where station ='FORMINPUT') - (select zone from station_zone where station ='FORMINPUT')
);
Codeigniter尝试版
$zd = (
$this->db->select('zone');
$this->db->get_where('station_zone','station' => $this->form->input('station'));
) - ($this->db->select('zone');
$this->db->get_where('station_zone','station' => $this->form->input('station2'));
);
$this->db->select('zone_cost');
$this->db->where('zone_diff', $zd);
答案 0 :(得分:1)
我认为你应该用mysql进行减法:
SELECT
station_zone.zone-sz2.zone as ZoneDiff
FROM station_zone
JOIN station_zone AS sz2 ON (sz2.station="station2")
WHERE station_zone.station="station1"
它没有经过测试,但我认为您可以使用类似的查询。在此之后,您可以组合您的主要查询,这样您只需要一个查询来“回答”您的完整数据问题。
答案 1 :(得分:0)
您可以查看CodeIgniter的干净语法,如下所示。
$this->db->select('(column2 - column1) AS `remains_value`')->get_where('tablename1', array('pk' => $pk_val))->row_array();
我不知道这个问题是否公开。但是我这个问题的方法只是在查询中减去两列内容,这可能有助于未来的引用。
谢谢