Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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