0

当我将下面的 UPDATE Query 放入 Workbench 时,它工作得很好,但是当我尝试通过 php 运行它时它什么也不做?有任何想法吗?

我已经尝试了表结构,TURNOVERSCORE因为 varchar(100) 和 Float,table1.item 和 t2.item 是主键。

使用 mysql_error 时提供错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 'UPDATE table1 JOIN (SELECT count(*) as cnt, ITEM FROM table2 WHERE' 附近使用正确的语法

$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);
4

3 回答 3

0

你的括号不匹配。您GROUP BY ITEM)在子查询中有两次。

于 2012-10-12T17:37:57.363 回答
0

php 查询要求我识别数据库,(当然)。在 Workbench 中,一旦您的数据库被选中,您就不需要添加db.tablename到查询中,而如果您尚未使用连接字符串标识它,则必须在 php 中添加。

于 2012-10-12T19:11:05.960 回答
0

只是将我的评论转换为 answer 。

执行前需要选择DB,或者将数据库添加到表名中。

于 2012-10-13T05:59:25.093 回答