Убедитесь, что ваш запрос
$this->db->select('station_zone.Zone-sz2.Zone AS Zone' , false)
->from('station_zone')
->join('station_zone AS sz2','sz2.Station', $station2)
->where('station_zone.Station',$station1);
$Q = $this->db->get();
действительно что-то возвращает.Попробуйте сначала в phpmyadmin или аналогичных инструментах, например, или соберите его вручную и передайте его методу $this->db->query($sql)
, например
Кроме того, вы неправильно создаете join (), может быть:
join('station_zone As sz2','sz2.Station = '.$station2)
Я думаю, неясно, откуда берется $ station2 и к каким таблицам вы хотите присоединиться ... Третьим параметром в join () должен быть тип соединения, например, "left" для.ех.См. docs
Даже часть select () выглядит странно, я вижу три точки: вы пытались запустить $this->db->last_query();
, чтобы посмотреть, как выглядит строка запроса?Я пока не могу понять это ...
Во втором запросе:
$this->db->select('Cost')
->from('zone_cost')
->where('Zone_Diff', $Q->row()->Zone_Diff);
Вы просите $Q->row()->Zone_Diff
, что я могу 'я не вижу, откуда происходит выборка ... не в предыдущем запросе, кажется
Last, здесь:
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
$data = $row->Cost;
return $data;
}
}
Выперезаписываем переменную $ data в цикле ... Нет, вы возвращаетесь сразу после первого прохода!Вы должны сделать:
foreach ($query->result() as $row)
{
$data[] = $row->Cost;
}
return $data;
ОБНОВЛЕНИЕ:
Вы говорите, что ваш запрос работает в phpmyadmin, так почему бы просто не выполнить:
$sql = "SELECT station_zone.Zone-sz2.Zone AS Zone FROM station_zone JOIN station_zone AS sz2 ON sz2.Station=? WHERE station_zone.Station=?";
$Q = $this->db->query($sql, array($station1,$station2));
и посмотреть, работает ли это?Иногда AR усложняет ситуацию, когда вам нужно начать избегать защиты идентификаторов и так далее.Подобный выше запрос по-прежнему безопасен от внедрения, поскольку использует привязки запросов и в 10 раз проще, чем сборка с AR.
Не видя схему БД, я все еще не могу понять, почему JOIN и почему он работаеттолько на столе и сам как псевдоним ... но я отвечал в неправильное время дня (ночью и этим утром :)), так что это может быть только я.Какие таблицы и как они структурированы?