Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/10/2011, 11h59   #1
Membre habitué
 
Jean-Philippe CHENU
Inscription : mars 2006
Messages : 197
Détails du profil
Informations personnelles :
Nom : Jean-Philippe CHENU
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : mars 2006
Messages : 197
Points : 110
Points : 110
Par défaut [requête sql] Mise à jour si non renseigné

Bonjour ,

J'ai une table 'profil' avec une clé primaire no_profil et un nombre d'importants de champs.
Je voudrais , pour le profil 82341 , récupérer les valeurs de tous les champs du profil 83332 mais , et c'est là que mon petit cerveau coince , uniquement pour les champs NULL du profil

Exemple sur les 4 1ères colonnes

Avant :
no_profil num_org no_dep commune
83332 9 23 23192
82341 NULL 23 23193

Après :
no_profil num_org no_dep commune
83332 9 23 23192
82341 9 23 23193


On voit ici que seul num_org doit être mis à jour parmi ces 3 champs
(mais j'ai plein d'autres colonnes)

Merci d'avance pour vos propositions
jeanphi45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 15h02   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
bonjour,

regardez du côté de "COALESCE", ou IFNULL, (voir CASE WHEN en dernier recours)
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2011, 23h07   #3
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
En général en SQL il n'y a pas de moyen de gérer un nombre variable de colonnes.
Il faut les gérer explicitement une par une. Quand ça ne convient pas c'est qu'il ne faut pas faire des colonnes, il faut faire un modèle du type "entité-valeur"
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 15h13   #4
Membre habitué
 
Jean-Philippe CHENU
Inscription : mars 2006
Messages : 197
Détails du profil
Informations personnelles :
Nom : Jean-Philippe CHENU
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : mars 2006
Messages : 197
Points : 110
Points : 110
Merci pour vos réponses :

J'ai utilisé COALESCE :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
UPDATE public.profil  
SET 
num_org = COALESCE (profil.num_org , bidule.num_org) ,
no_dep = COALESCE (profil.no_dep , bidule.no_dep) ,
commune = COALESCE (profil.commune  , bidule.commune),
... etc pour toutes les autres colonnes ....
FROM 
(SELECT num_org , no_dep , commune , .... etc pour toutes les autres colonnes ...
FROM public.profil 
WHERE no_profil = 83332
)
AS bidule 
WHERE no_profil = 82341 ;
jeanphi45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h14.


 
 
 
 
Partenaires

Hébergement Web