Pages: 1
- Sujet précédent - QGIS: Constructeur de requete - Clause where incorrectement traduite ? - Sujet suivant
#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)
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
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
Pages: 1
- Sujet précédent - QGIS: Constructeur de requete - Clause where incorrectement traduite ? - Sujet suivant