92 votes

Comment créer une mise à jour lors de la jointure de tables sur SQLite?

J'ai essayé :

 UPDATE closure JOIN item ON ( item_id = id ) SET checked = 0 WHERE ancestor_id = 1
 

Ensuite :

 UPDATE closure, item SET checked = 0 WHERE ancestor_id = 1 AND item_id = id
 

Les deux fonctionnent avec MySql mais me donne une erreur de syntaxe dans SQLite.

Comment puis-je faire en sorte que UPDATE / JOIN fonctionne avec SQLite version 3.5.9?

127voto

Andrew Watt Points 1509

Tu ne peux pas. SQLite ne prend pas en charge les jointures dans les instructions UPDATE .

Mais vous pouvez probablement le faire avec une sous-requête à la place:

 UPDATE closure SET checked = 0 
WHERE item_id IN (SELECT id FROM item WHERE ancestor_id = 1);
 

Ou quelque chose comme ça; on ne sait pas exactement quel est votre schéma.

0voto

Arioch 'The Points 8056

http://en.wikipedia.org/wiki/Merge_(SQL)

Ceci montre quelques commandes SQL'2008 pour update-with-join et peut-être une syntaxe alternative pour cela dans SQLite

-3voto

Noel Kennedy Points 4741

Je n'ai pas utilisé SQLLite mais vous pouvez essayer cette syntaxe:

 UPDATE closure 
SET 
   checked = 0 
FROM 
   closure 

   JOIN item 
      ON ( item_id = id )

WHERE 
   ancestor_id = 1
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X