0

以下のUPDATEクエリは、Workbenchにスローすると正常に機能しますが、phpを介して実行しようとすると、何も実行されません。何か案は?

varchar(100)とFloatとしてテーブルの構造を試しTURNOVERSCOREましたが、table1.itemとt2.itemが主キーです。

mysql_errorの使用時にエラーを提供します:

SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、'UPDATE table1 JOIN(SELECT count(*)as cnt、ITEM FROM table2WHERE'の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);
4

3 に答える 3

0

phpクエリでは、データベースを特定する必要がありました(もちろん)。Workbenchでは、データベースを選択db.tablenameした後、クエリにを追加する必要はありませんが、接続文字列でデータベースをまだ識別していない場合は、phpで追加する必要があります。

于 2012-10-12T19:11:05.960 に答える
0

そこに私のコメントを変換して答えるだけです。

実行する前にDBを選択するか、テーブル名にデータベースを追加する必要があります。

于 2012-10-13T05:59:25.093 に答える
0

括弧が一致しません。GROUP BY ITEM)サブクエリに 2 回あります。

于 2012-10-12T17:37:57.363 に答える