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 20 June 2023 16:48

barthsdee
Participant occasionnel
Date d'inscription: 23 Aug 2011
Messages: 45

(Postgre HELP] souci pour remonter un attribut dans une vue

Bonjour,

J'ai une vue géante alimentée par une cinquantaine de tables,

JE cherche à faire des opérations sur des attributs:

J'ai 3 tables codant des informations (à chaque fois on est sur du Null,1;5)

La présence de null dans les tables m'empèche de faire des additions.

Dans le code de ma vue , je saisis donc concat (table1,table2,table3) as ma_valeur

ça marche


Je me retrouve avec 5 combinaisons possibles: 1;11;5;15,Null en résultat

Mon problème est le suivant: je n'arrive pas à convertir ces valeurs en texte plus explicite pour l'utilisateur final via une jointure de table .

                            Je souhaite remplacer les valeurs 1 et 11 par oui et null /5 et 15 par non ou null
                           

J'ai tenté en créant une table de correspondance et en faisant une jointure de table, cependant ça ne marche pas (la jointure semble ne pas passer car en boucle)

Hors ligne

 

#2 Tue 20 June 2023 18:37

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: (Postgre HELP] souci pour remonter un attribut dans une vue

Bonsoir,

Vous pouvez remplacer les valeurs nulles par autre chose, ce que je vous conseille de faire si vous voulez faire des opérations avec vos colonnes.
la fonction sql coalesce(col, val) renvoie val si col est NULL,

dans votre cas, faites coalesce(col, 0) : null devient 0.

Pour créer de nouvelles valeurs à partir de valeurs de colonnes, vous pouvez utiliser la construction CASE (sorte de if then else)

Code:

case when col in (1, 11) then 'oui'
       when col in (0, 5, 15) then 'non'
       else 'peut etre' end

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB