Ошибка в синтаксисе SQL, проверьте руководство
Я использую MySQL Control Center для проверки некоторых операторов SQL, которые выдают ошибку в моем коде. Каждый раз, когда я тестирую, это не дает никакой обратной связи о том, что это за ошибка, где ошибка. Он просто перечисляет все утверждение и говорит, что где-то там. Это утверждение, как и в Borland, дает мне ошибку:
sprintf(sql, "CREATE TABLE %s AS "
"SELECT "
" LPAD(V0_X1_A3, 13, ' ') AS V0_X1_A3, "
" SUM (F5*F6) AS CostExt, "
" IFNULL(V0_X1_A2, 0.00000) AS V0_X1_A2, "
" SUM(F6) AS F6 "
"FROM _TransRecords "
" LEFT OUTER JOIN _V0_X1 ON V0_X1_PK = V0_X1_FK "
"WHERE %s "
" GROUP BY V0_X1_A3 ", TblName, where);
Я отредактировал синтаксис так:
sprintf(sql, "CREATE TABLE %s AS "
" SELECT "
" SUM (F5*F6) AS CostExt, "
" SUM(F6) AS F6 "
" FROM _TransRecords "
" LPAD(V0_X1_A3, 13, ' ') AS V0_X1_A3, "
" IFNULL(V0_X1_A2, 0.00000) AS V0_X1_A2, "
" FROM _V0_X1 "
" LEFT OUTER JOIN _V0_X1 ON V0_X1_PK = V0_X1_FK "
" WHERE %s "
" GROUP BY V0_X1_A3 ", TblName, where);
2 ответа
Я получил это на работу. Вот мой код
sprintf(sql, "CREATE TABLE %s AS "
" SELECT "
" SUM(F5*F6) AS CostExt, "
" SUM(F6) AS F6, "
" LPAD(V0_X1_A3, 13, ' ') AS V0_X1_A3, "
" IFNULL(V0_X1_A2, 0.00000) AS V0_X1_A2, "
" SUM(V0_X1_A2*F6) AS RetailExt "
" FROM _TransRecords "
" LEFT OUTER JOIN _V0_X1 ON V0_X1_PK = V0_X1_FK "
" WHERE %s "
" GROUP BY V0_X1_A3 ", TblName, where);
Существует проблема в JOIN
синтаксис, так как вы не указываете имена таблиц в ON
состояние. Я угадываю решение (так как я не знаю, какие столбцы принадлежат какой таблице):
"CREATE TABLE %s AS "
"SELECT "
" LPAD(V0_X1_A3, 13, ' ') AS V0_X1_A3, "
" SUM (F5*F6) AS CostExt, "
" IFNULL(V0_X1_A2, 0.00000) AS V0_X1_A2, "
" SUM(F6) AS F6 "
"FROM _TransRecords "
" LEFT OUTER JOIN _V0_X1 ON _TransRecords.V0_X1_PK = _V0_X1.V0_X1_FK "
"WHERE %s "
" GROUP BY V0_X1_A3 "