SQFlite - удалить строку с помощью бросков соединения: около синтаксической ошибки LEFT - PullRequest
0 голосов
/ 06 декабря 2018

В настоящее время я работаю над списком покупок, в котором пользователь может иметь несколько списков и может добавлять разные элементы в разные таблицы.Также возможно проверить эти пункты.Все работает нормально, но когда я хочу удалить некоторые из отмеченных элементов, появляется сообщение об ошибке:

D / Sqflite (10847): [Thread [Sqflite, 5, main]] DELETE FROM shoppingTitlesСЛЕДУЮЩИЙ ПРИСОЕДИНЯЙТЕСЬ к Shopping Shoppingitit.idShopping = shopping.id СЛЕДУЙТЕ ПРИСОЕДИНЯЙТЕСЬ к listTitles ON shoppingTitles.idTitles = listTitles.id ГДЕ shopping.checked = 1 AND listTitles.titleName =?[Einkaufsliste] E / SQLiteLog (10847): (1) рядом с «LEFT»: синтаксическая ошибка

Это мой SQL-запрос:

DELETE 
  FROM shoppingTitles 
    LEFT JOIN shopping ON shoppingTitles.idShopping = shopping.id
    LEFT JOIN listTitles ON shoppingTitles.idTitles = listTitles.id
  WHERE shopping.checked = 1
  AND listTitles.titleName = "Liste"

Я надеюсь, что кто-то можетПомоги мне.Заранее спасибо XD


НАЙДЕНО МОЕ РЕШЕНИЕ НА ОСНОВЕ ОТВЕТА, предоставленного Akn

DELETE FROM shoppingTitles 
WHERE idShopping IN (
  SELECT shoppingTitles.idShopping
  FROM shoppingTitles, shopping, listTitles
  WHERE shopping.id = shoppingTitles.idShopping
  AND shoppingTitles.idTitles = listTitles.id
  AND shopping.checked = 1
  AND listTitles.titleName = "Liste"
)

1 Ответ

0 голосов
/ 06 декабря 2018

Попробуйте это так:

DELETE S
FROM
  shoppingTitles S
  LEFT JOIN shopping ON S.idShopping = shopping.id
  LEFT JOIN listTitles ON S.idTitles = listTitles.id
WHERE
  shopping.checked = 1
  AND listTitles.titleName = "Liste"

Обновление: Думаю, поддержка JOINs в операторах DELETE не поддерживается, поэтому вам лучше найти способ использовать SELECT заявление.Ниже SELECT оператор вернет идентификатор.Если он совпадает с вашим myIdShopping, он будет удален.Я не мог проверить / запустить код.Надеюсь, что это работает.

DELETE FROM
  shoppingTitles
WHERE
  myIdShopping IN(
    SELECT
      shoppingTitles.idShopping
    FROM
      shoppingTitles
      LEFT JOIN shopping ON shoppingTitles.idShopping = shopping.id
      LEFT JOIN listTitles ON shoppingTitles.idTitles = listTitles.id
    WHERE
      shopping.checked = 1
      AND listTitles.titleName = "Liste"
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...