Ошибка в синтаксисе 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 "
Другие вопросы по тегам