Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 27 February 2019 17:18

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 981

QGIS 3.4: SQL update sur jointure

Bonjour à tous,
Je souhaite faire un UPDATE sur une table d'après une jointure.
J'ai écris cette requête, mais DB Manager me retourne un message d'erreur :

Code:

UPDATE habitats
SET etat_cons = 1
WHERE id_habitat IN (
        SELECT h.id_habitat
        FROM habitats h
        JOIN TYPO_PERSO t ON h."nom_français" = t."nom_français"
        WHERE etat_cons IS NULL
        AND t.statut not like 'habitat non d%')

Message d'erreur :

Code:

Query execution error on CREATE TEMP VIEW _tview AS UPDATE habitats
SET etat_cons = 1
WHERE id_habitat IN (
        SELECT h.id_habitat
        FROM habitats h
        JOIN TYPO_PERSO t ON h."nom_français" = t."nom_français"
        WHERE etat_cons IS NULL
        AND t.statut not like 'habitat non d%'): 1 - near "UPDATE": syntax error

Pensez-vous que la syntaxe de ma requête soit problématique ?

Pourtant, le SELECT suivant fonctionne très bien et retourne le nombre d'entités à mettre à jour :

Code:

        SELECT h.id_habitat
        FROM habitats h
        JOIN TYPO_PERSO t ON h."nom_français" = t."nom_français"
        WHERE etat_cons IS NULL
        AND t.statut not like 'habitat non d%'

Merci pour vos conseils !

A+

Sylvain M.


Sylvain M.

Hors ligne

 

#2 Wed 27 February 2019 17:46

carteq
Participant assidu
Date d'inscription: 8 Mar 2008
Messages: 829

Re: QGIS 3.4: SQL update sur jointure

L'utilisation des guillemets n'est-elle pas problématique ? Vous utilisez des guillemets doubles pour cibler un champ dans la sous-requête pour faire le JOIN et aucun guillemet après le SET pour cibler etat_cons.

Cela dit, je ne suis pas encore très familier avec SQLite et sa syntaxe.

Hors ligne

 

#3 Wed 27 February 2019 18:26

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 981

Re: QGIS 3.4: SQL update sur jointure

L'utilisation des guillemets n'est-elle pas problématique ?


Je les ai mis à cause de la cédille dans le nom de champ "nom_français" (ce n'est pas moi qui ait créé cette base), champ qui sert pour la jointure.
Le SELECT fonctionne très bien (il fonctionne d'ailleurs aussi sans guillemets).
Mais c'est l'UPDATE qui ne passe pas...


Sylvain M.

Hors ligne

 

#4 Wed 27 February 2019 18:29

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 981

Re: QGIS 3.4: SQL update sur jointure

Mince alors, j'ai l'impression que les requêtes d'UPDATE sont impossibles avec DB Manager :
http://osgeo-org.1560.x6.nabble.com/Upd … 22406.html

Vous me le confirmez ?


Sylvain M.

Hors ligne

 

#5 Wed 27 February 2019 19:15

carteq
Participant assidu
Date d'inscription: 8 Mar 2008
Messages: 829

Re: QGIS 3.4: SQL update sur jointure

J'ai roulé la requête suivante avec succès il y a peu : https://georezo.net/forum/viewtopic.php … 80#p317680

Je ne sais plus si j'étais en virtual layer ou avec un geopackage cependant.

Hors ligne

 

#6 Wed 27 February 2019 19:36

carteq
Participant assidu
Date d'inscription: 8 Mar 2008
Messages: 829

Re: QGIS 3.4: SQL update sur jointure

Est-ce que vous pouvez activer le mode édition sur la table que vous voulez modifier ? Si ce mode n'est pas accessible, le Update ne fonctionnera pas.

Hors ligne

 

Pied de page des forums

Powered by FluxBB