0

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

客户端

服务器端

该查询的功能是显示数据库中的数据,查询如下:

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
4

2 回答 2

0
FUNCTION TestMediaControl.monthavrage does not exist

如果相关的错误代码是 1305,这意味着 MySQL 正在寻找存储过程“monthavrage”,但找不到它。

于 2012-08-29T04:38:53.710 回答
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
于 2012-09-07T04:31:47.650 回答