Я пытаюсь обновить таблицу SQLIte из другой таблицы, и мой синтаксис кажется неправильным - PullRequest
0 голосов
/ 17 января 2019

Я создал контрактный файл базы данных, поэтому мой синтаксис SQLite отличается от всех примеров, которые я видел до сих пор, и мне кажется, что я не понимаю его правильно. я был бы признателен за некоторые рекомендации по правильному синтаксису, который будет использоваться

Мой код указан ниже; +

String updt = "UPDATE" + TABLE_NAME4 + "" +

        "SET "
        + COLUMN_TAKEAWAY_PK_COST   = ("SELECT  " +COLUMN_PACK_COST+" " +
        "FROM " + TABLE_NAME6+"" +
        " WHERE " +COLUMN_PACK_TYPE+" = " +COLUMN_TAKEAWAY_PK_TYPE+" " +
        " WHERE "
                 EXIST
                        "SELECT *
                        "FROM " + TABLE_NAME6+"" +
                        " WHERE " +COLUMN_PACK_TYPE+" = " +COLUMN_TAKEAWAY_PK_TYPE+""

                );                           

1 Ответ

0 голосов
/ 18 января 2019

У вас есть несколько проблем.

Во-первых, у вас есть два предложения WHERE, когда у вас может быть только одно (хотя в подзапросе может быть предложение where). ГДЕ ожидает от выражения выражение true или false (1 или больше или 0), вы можете использовать AND или OR, чтобы получить результат true или false из двух результатов, поэтому вам следует использовать

 WHERE result_of_expression AND result_of_the_other_expression

или ГДЕ result_of_expression И result_of_the_other_expression

Вторая проблема заключается в том, что вы затем пытаетесь использовать подзапрос. Подзапрос должен быть заключен в круглые скобки ( в начале и ) в конце.

Третья проблема заключается в том, что EXIST - это не ключевое слово, а EXISTS .

Таким образом, выше может быть: -

String updt = "UPDATE " + TABLE_NAME4 + 
    " SET " + COLUMN_TAKEAWAY_PK_COST + " = ( " +  //<<<<<<<<<< OPEN PARENTHESIS FOR SUBQUERY
    " SELECT  " + COLUMN_PACK_COST +
    " FROM " + TABLE_NAME6 +
    " WHERE " +COLUMN_PACK_TYPE+" = " + COLUMN_TAKEAWAY_PK_TYPE +
    " AND EXISTS " + //<<<<<<<<<< AND INSTEAD OF WHERE and EXISTS INSTEAD OF EXISTS
    "(" + //<<<<<<<<<< OPEN PARENTHESIS FOR SUB-SUBQUERY
    " SELECT * " +
    " FROM " + TABLE_NAME6 +
    " WHERE " + COLUMN_PACK_TYPE + " = " + COLUMN_TAKEAWAY_PK_TYPE + 
    " ) " + //<<<<<<<<<< CLOSE PARENTHESIS FOR SUB-SUBQUERY
    ")" //<<<<<<<<<<< CLOSE PARENTHESIS FOR SUBQUERY
    );  
  • Обратите внимание, что приведенный выше является принципиальным кодом
    • это не обязательно отражает желаемые результаты, так как это не может быть определено
    • скорее он пытается уточнить синтаксис, который можно использовать
    • не проверено, поэтому может содержать ошибки

Согласно вашему комментарию, вы хотели менее сложный запрос согласно: -

String updatePack = "UPDATE FP_Master SET TakeAwayPkCost = (SELECT Pack_Cost FROM Take_Away_Pack_Details WHERE Pack_Type = TakeAwayPkType)"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...