当我把它扔进Workbench时,下面的UPDATE查询工作正常,但是当我尝试通过php运行它时什么也没做?任何想法?
我已经尝试将TURNOVERSCORE
的表结构作为varchar(100)和Float,table1.item和t2.item是主键。
使用mysql_error时提供错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'UPDATE table1 JOIN附近使用正确的语法(SELECT count(*)as cnt,ITEM FROM table2 WHERE'在第2行
$con = mysql_connect("localhost","username","pw");
$turnoverquery = "UPDATE table1
JOIN (SELECT count(*) as cnt, item FROM table2 WHERE table2.TRANS_DATE BETWEEN DATE_SUB(CURDATE(), INTERVAL 365 DAY) AND CURDATE() GROUP BY item) t2
ON table1.item = t2.item
SET table1.TURNOVERSCORE=CASE
WHEN t2.cnt/12 < 1 AND table1.CAT = 'E' THEN .05
WHEN t2.cnt/12 >= 1 AND t2.cnt/12 < 4 AND table1.CAT = 'E' THEN .5
WHEN (t2.cnt/12) >= 4 AND table1.CAT = 'E' THEN 1
WHEN (t2.cnt/12) <= 5 AND table1.CAT != 'E' THEN .05
WHEN (t2.cnt/12) >= 6 AND (t2.cnt/12) < 11 AND table1.CAT != 'E' THEN .25
WHEN (t2.cnt/12) >= 11 AND (t2.cnt/12) < 21 AND table1.CAT != 'E' THEN .5
WHEN (t2.cnt/12) >= 21 AND table1.CAT != 'E' THEN 1 END";
mysql_query($turnoverquery);
答案 0 :(得分:0)
您的括号不匹配。您在子查询中有两次GROUP BY ITEM)
。
答案 1 :(得分:0)
php查询要求我识别数据库,(当然)。在Workbench中,一旦选择了数据库,就不需要将db.tablename
添加到查询中,而如果尚未使用连接字符串识别它,则必须在php中。
答案 2 :(得分:0)
将我的评论转换为答案。
您需要在执行前选择DB,或者将数据库添加到表名中。