#1 Sun 13 January 2019 18:56
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
QGIS: Conditions imbriquées pour créer un attribut
Bonjour à tous,
J'essaie de créer un attribut A
- si l'attribut distance vaut 0 et l’attribut Nom est NULL, A renvoie Pas_appariement
- si l'attribut distance vaut 0 et l’attribut Nom est différent de NULL, A renvoie Appariement géométrique 1m
- si l'attribut distance est différent de 0, A renvoie Pas_appariement
Je me suis lancé d'une condition imbriquée dans une autre (cf. ci-dessous) mais l'expression est invalide
CASE WHEN ("distance" = 0) THEN
(CASE WHEN ("Nom" ilike null) THEN 'Pas_appariement' else 'Appariement géométrique 1m' END)
ELSE 'Pas_appariement'
END
Si quelqu'un a une idée ...
Un grand merci d'avance.
Hors ligne
#2 Mon 14 January 2019 08:08
- trovez
- Participant occasionnel
- Lieu: Nantes
- Date d'inscription: 17 Sep 2007
- Messages: 24
Re: QGIS: Conditions imbriquées pour créer un attribut
Bonjour,
NULL n'est pas une valeur.
La façon de tester l'état NULL s'écrit :
"Nom" is NULL
Donc testez :
CASE WHEN ("distance" = 0) THEN
(CASE WHEN ("Nom" is null) THEN 'Pas_appariement' else 'Appariement géométrique 1m' END)
ELSE 'Pas_appariement'
END
Cordialment
Hors ligne
#3 Mon 14 January 2019 08:31
- laurent00
- Participant assidu
- Date d'inscription: 6 Aug 2007
- Messages: 405
Re: QGIS: Conditions imbriquées pour créer un attribut
écriture plus simple si je comprends bien
Code:
CASE WHEN "distance" = 0 AND "Nom" is NOT null THEN 'Appariement géométrique 1m' ELSE 'Pas_appariement' END
LJ
Dernière modification par laurent00 (Mon 14 January 2019 08:32)
Hors ligne
#4 Tue 15 January 2019 11:00
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Conditions imbriquées pour créer un attribut
Super !!! Un grand merci à vous 2. Les 2 solutions fonctionnent.
Hors ligne
#5 Sat 19 January 2019 17:07
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Conditions imbriquées pour créer un attribut
Et ... toujours dans le même registre, je voudrais créer un attribut qui, sous certaines conditions me renvoie la valeur de 2 attributs séparés du caractère "_" (cf. exemple).
J'ai essayé ceci mais ça me renvoie NULL ... (alors que VSDesigna et Nom sont bien 2 attributs valides).
Merci encore ...
CASE
WHEN "MDApp" ILIKE 'App geom 1m' THEN "VSDesigna" ||'_'|| "Nom"
END
Hors ligne
#6 Sat 19 January 2019 17:43
- laurent00
- Participant assidu
- Date d'inscription: 6 Aug 2007
- Messages: 405
Re: QGIS: Conditions imbriquées pour créer un attribut
bonsoir
avec l'opérateur différent cela se passe t-il mieux ?
Code:
CASE WHEN "MDApp" <> 'App geom 1m' THEN "VSDesigna" ||'_'|| "Nom" END
tu peux aussi tester
Code:
if( "MDApp" <> 'App geom 1m' , "VSDesigna" ||'_'|| "Nom", '')
LJ
Dernière modification par laurent00 (Sat 19 January 2019 22:14)
Hors ligne
#7 Sun 20 January 2019 18:51
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Conditions imbriquées pour créer un attribut
En faite, l'attribut Nom suivant les conditions mentionnées était ... vide ... (d'où le renvoi de NULL).
Je m'étais trompé d'attribut et ça fonctionne maintenant.
Merci tout de même de m'avoir à nouveau appris quelque chose (notamment que différent s'écrivait "< >" et que l'on pouvait aussi lancer une condition avec if).
A la prochaine question ...
Hors ligne