Использование функции в операторе MySQL вместо суб-выбора - PullRequest
0 голосов
/ 21 октября 2011

У меня есть функция:

function get_kwp($siteid){

$this->db->select('siteid')
         ->from('nwsite')
         ->where('siteid', $siteid);
}

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

Это другой оператор MySQL, который мне нужен для вызова:

$this->db->select("day, month, get_kwp($siteid) AS kwp")
         ->from('nwsite');

Это не похоже на выполнение функции get_kwp ().

Любойидеи?

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Простые подзапросы Google на CodeIgniter вернули следующий результат: http://codeigniter.com/wiki/Subqueries

Вы не можете включить вызов функции PHP в оператор SQL SELECT.Вы должны построить подзапрос в вашей инструкции базы данных.Используйте ссылку, которую я дал, чтобы увидеть, как на самом деле это сделать.

РЕДАКТИРОВАТЬ

Я только что увидел, что статья ссылается на библиотеку на GitHub, но установка этой библиотекиэто просто.

0 голосов
/ 21 октября 2011

Вы можете написать функцию в MySQL:

DELIMITER $$

CREATE FUNCTION get_kwp(Mysite_id INTEGER) RETURNS INTEGER
BEGIN
  DECLARE result INTEGER;
  SELECT siteid INTO result FROM nwsite WHERE siteid = Mysite_id LIMIT 1;
  RETURN result;
END $$

DELIMITER ;

И использовать это в своем запросе:

SELECT day, month, get_kwp('$siteid') AS kwp FROM nwsite;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...