在MySQL语句中使用函数而不是子选择

时间:2011-10-21 10:14:47

标签: php mysql codeigniter subquery

我有这个功能:

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 个答案:

答案 0 :(得分:2)

CodeIgniter子查询上的简单Google返回了以下结果:http://codeigniter.com/wiki/Subqueries

您不能在SQL SELECT语句中包含PHP函数调用。您应该在数据库语句中构建子查询。使用我提供的链接来了解如何实际操作。

修改

我刚刚看到文章引用了GitHub上的一个库,但是这个库的安装非常简单。

答案 1 :(得分:0)

您可以在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;