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

D / Sqflite (10847): [Тема [Sqflite, 5, main]] УДАЛИТЬ ИЗ shoppingTitles ВЛЕВО ПРИСОЕДИНЯЙТЕСЬ к покупкам в shoppingTitles.idShopping = shopping.id ЛЕВЫЙ ПРИСОЕДИНЯЙТЕСЬ к listTitles НА 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"
)
0
user9047282 6 Дек 2018 в 17:08

1 ответ

Лучший ответ

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

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"

Обновление: Похоже, в операторах DELETE нет поддержки для JOINs, поэтому вам лучше найти способ использовать оператор 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"
  )
0
Akn 8 Дек 2018 в 11:53