我不知道这篇文章是否重复。我发现一些由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
答案 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