2012-01-12 2 views
0

Я пытаюсь превратить инструкцию php mysql в синтаксис Codeigniter. Код выбирает все из db, но разность зон равна двум входным формам, вычитаемым друг из друга. Буду признателен за любую оказанную помощь.Синтаксис PHP для Codeigniter - выбор вычитания из ввода db/form

PHP Version

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); 

ответ

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" 

Он не проверял, но я думаю, что вы можете используйте аналогичный запрос. И после этого вы можете объединить свой основной запрос, так что вам понадобится только один запрос для ответа на ваш полный вопрос.

+0

Вы устанавливаете станцию ​​1 как $ this-> input-> post (station) перед рукой? Я не совсем уверен, что понимаю – Jon

+0

Нет, я боюсь, что я не могу заставить это работать ... – Jon

+0

Это всего лишь «псевдокод», «station1» и «station2» - из вашей формы ('$ this- > input-> get ("...") 'или' $ this-> form-> input (...) ') – uzsolt

0

вы можете проверить чистый синтаксис CodeIgniter, как показано ниже.

$this->db->select('(column2 - column1) AS `remains_value`')->get_where('tablename1', array('pk' => $pk_val))->row_array(); 

Я не знаю, открыт ли этот вопрос или нет. но способ, которым я пришел к этому вопросу для вычитания только двух столбцов внутри запроса, может помочь будущему рефереру.

Спасибо

Смежные вопросы