这个查询有什么样的mysql函数?

时间:2012-08-29 04:27:06

标签: php mysql function

我不知道这篇文章是否重复。我发现一些由JQuery DataTable组成的php文件,由某人制作(我不知道开发人员在哪里)。

Clientside

Serverside

此查询的功能是在数据库中显示数据,查询如:

case 'average' :
                $needfieldname=false;
                $month=getVar('calcmonth');
                $sql="SELECT SQL_CALC_FOUND_ROWS ID,name,remark,avrusepmonth 
                , CONCAT('<input type=''checkbox''id=''cb' , ID ,''' name=''check[]'' value=''',ID,''' >'
                ,'<label class=''lbcb'' for=''cb', ID,'''><=update=</label>') as checkb 
                , moq, leadtime 
                FROM test_media ";
                break;

我想问的是这部分:

monthavrage(ID,".$month.") as latestavr

上面查询什么样的Mysql函数?因为我得到了一个错误:

FUNCTION TestMediaControl.monthavrage does not exist

2 个答案:

答案 0 :(得分:0)

FUNCTION TestMediaControl.monthavrage does not exist

如果相关的错误代码是1305,那意味着MySQL正在寻找存储过程'monthavrage',并且无法找到它。

答案 1 :(得分:0)

我找到了一个声明monthavrage函数的SQL文件。 我只需要执行这个文件,所以我的问题就消失了。

USE testmediacontrol;

DROP FUNCTION IF EXISTS  monthavrage;


delimiter //

CREATE FUNCTION monthavrage (mediaID MEDIUMINT ,amonth DECIMAL(2)) RETURNS DECIMAL(6,2)
BEGIN
        DECLARE avguse DECIMAL(6,2);
        DECLARE howlongmonth DECIMAL(2);

        SELECT DATEDIFF(NOW(),startuse)/30.4 
            INTO howlongmonth from media_use 
            WHERE media_ID=mediaID
            ORDER BY startuse 
            LIMIT 0,1;
        IF howlongmonth < amonth THEN
            SET amonth=howlongmonth;
        END IF;
        IF amonth <= 0 THEN
            RETURN 0;
        END IF;
        SELECT count(*)/amonth 
            INTO avguse from media_use 
            WHERE media_ID=mediaID and startuse  BETWEEN SUBDATE(now(),INTERVAL 6 MONTH) and  now();
        RETURN avguse;
END