PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 15/02/2015 21:54:22

vcaudron
Membre

union all

bonjour,
j'ai une erreur que je ne comprends pas car cela fonctionne en sql avec d'autres base.

l'ordre :
select code_contact,(nom_contact || ' ' || prenom_contact || ' - ' || profession) as nom_affiche from contacts where statut='1' and  type_tiers='C' and code_tiers='xxxxxx' and type_contact='CONTACT'
union all
select code_contact,(nom_contact || ' ' || prenom_contact || ' - ' || profession,' INACTIF') as nom_affiche from contacts where statut='2' and  type_tiers='C' and code_tiers='xxxxxx'  and type_contact='CONTACT'
order by nom_affiche
renvoie l'erreur :
les UNION types text et record ne peuvent pas correspondre.

merci d'avance pour vos lumières

Hors ligne

#2 15/02/2015 21:58:59

vcaudron
Membre

Re : union all

re,
désolé ... j'ai trouvé. quand l'on doit gérer plusieurs types de base et que le concat n'est pas identique.
sur la deuxième ligne, il restait une virgule :
(nom_contact || ' ' || prenom_contact || ' - ' || profession,' INACTIF')

bonne soirée

Hors ligne

#3 15/02/2015 23:00:01

gleu
Administrateur

Re : union all

La question est maintenant : pourquoi mettre des parenthèses ? c'est pour ça que PostgreSQL a pris la deuxième colonne pour un record.


Guillaume.

Hors ligne

#4 16/02/2015 23:04:39

vcaudron
Membre

Re : union all

bonjour,
le code initial était concat(val1,val2,...) donc
          * j'enlève le concat
          * je garde les parenthèses
          * et je remplace les virgules par deux pipes

Hors ligne

Pied de page des forums