PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Jointures externes

Technique - général | Jointures externes

Par rom1 le 30/11/2005 - 13:28

Bonjour,

Je n'arrive pas à faire fonctionner la requete suivante :
select a.numero, sum(e.valeur)
from a full outer join e on (a.numero = e.section)
where conditions
group by a.numero
order by a.numero

La table a contient tous les numéros suceptibles d'être dans la table e (champ e.section) mais pour les conditions que je definis sur la table e, les e.section ne correspondent pas à tous les a.numeros. Pour ces numeros, je veux que sum(e.valeur) soit renvoyer avec la valeur null. L'utilisation d'une jointure externe me semble donc une bonne solution mais elle ne fonctionne pas avec la syntaxe ci-dessus. J'ai aussi essayer avec right et left au lieu de full sans résultat.

Avez-vous une solution?
Merci!

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

SUM ne prend pas le null s

sparky/ = 30 Novembre, 2005 - 14:51

SUM ne prend pas le null

select a.numero, sum(coalesce(e.valeur,0))
from a full outer join e on (a.numero = e.section)
where conditions
group by a.numero
order by a.numero

Ecrit autrement
select vw.numero, sum(vw.ma_valeur) from
(select a.numero, COALESCE(e.valeur,0) as ma_valeur
from a full outer join e on (a.numero = e.section) where conditions ) as vw
group by vw.numero
order by vw.numero


j'ai déjà essayé la foncti

rom1/ = 30 Novembre, 2005 - 15:07

j'ai déjà essayé la fonction coalesce mais le problème est ailleurs : la jointure externe ne renvoie pas de valeurs null :
pour les a.numero qui n'apparaissent pas dans e (e.section), je veux la ligne avec la valeur null (sur laquelle je pourrai appliquer la fonction coalesce)
exemple de résultat attendu :
numero valeur
1 212
2 null
3 45

exemple de résultat obtenu :
numero valeur
1 212
3 45

C'est la jointure externe qui pose problème...


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.