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 Tue 11 April 2017 14:09

JME44
Juste Inscrit !
Lieu: Guérande
Date d'inscription: 5 Oct 2016
Messages: 4

QGIS: Constructeur de requete - Clause where incorrectement traduite ?

Bonjour,

Ma table MySql comporte un champ `campagne` simple entier.
Dans le constructeur de requête, en sélectionnant campagne dans la la zone de champs et en complétant avec = 1, on obtient "campagne" = 1 mais le résultat en cliquant sur le bouton Tester n'est pas correct : la clause where a retourné 0 ligne.
En écrivant directement `campagne` = 1, le résultat de Tester est a priori correct : la clause where a retourné 18 lignes.

Cependant, en validant le Constructeur de requête puis les Propriétés de la couche, on obtient un affichage improbable, sans aucune relation évidente  entre les points affichés.
En réaffichant les Propriétés de la couche, la Source de la couche se termine par tables=mesure|layername=mesure|subset=`campagne` = 1

Ce subset=`campagne` = 1 avec deux signes = successifs semble syntaxiquement étrange.

Où est mon erreur ?

Merci de votre aide

Toujours personne pour me lire et me répondre ?


QGIS 64 bits (voir image)
Ubuntu 16.04 4.4.0-72-generic #93-Ubuntu

Dernière modification par JME44 (Mon 22 May 2017 13:38)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Thu 26 November 2020 09:26

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Constructeur de requete - Clause where incorrectement traduite ?

Bonjour,

Je viens de tomber sur cet ancien post qui m'a apporté une première réponse dans mes recherches:

Le constructeur de requête propose cette requête:

Code:

"commune" = 'Lorient'

Qui fonctionne avec la plupart des formats que j'ai testé mais pas avec une base Mysql.

et en replaçant les doubles guillemets par `:

Code:

`commune` = 'Lorient'

ça fonctionne.

Y a t'il une configuration spécial pour cette base de données.

Cordialement.

Dernière modification par michel56 (Thu 26 November 2020 09:28)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#3 Thu 26 November 2020 13:37

jmarsac
Participant assidu
Lieu: NICE
Date d'inscription: 26 Oct 2005
Messages: 567
Site web

Re: QGIS: Constructeur de requete - Clause where incorrectement traduite ?

Bonjour,

Le standard SQL demande d'utiliser des guillemets doubles (") pour délimiter les identifiants d'objets (table, colonne, etc...) et des guillemets simples (') pour délimiter les chaines de caractères.
Par défaut, MySQL utilise des guillemets inversés (`) pour cela; il ne fait pas de différence entre les guillemets simples et les guillemets doubles, qui peuvent être utilisés indifféremment pour délimiter les chaines de caractères.
D'après la doc, il faut utiliser MySQL en mode ANSI_QUOTES pour utiliser le standard (guillemets doubles) pour délimiter les noms d'objets (https://dev.mysql.com/doc/refman/8.0/en … nsi_quotes).

Apparemment, d'après l'historique des bugs QGIS,

Code:

commune = 'Lorient'

devrait fonctionner

Dernière modification par jmarsac (Thu 26 November 2020 13:39)


Jean-Marie
Azimut

Hors ligne

 

#4 Thu 26 November 2020 14:43

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Constructeur de requete - Clause where incorrectement traduite ?

Oui en effet ça fonctionne sans guillemet:

Code:

commune = 'Lorient'

Merci pour la répponse.


Opérateur cartographique & DAO & PHP.

Hors ligne

 

Pied de page des forums

Powered by FluxBB