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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Mon 23 August 2021 14:45

dhaulagiri
Participant occasionnel
Lieu: Nîmes, Gard
Date d'inscription: 1 Dec 2006
Messages: 46
Site web

PostrgeSQL - valeur présente une fois dans plusieurs colonnes

Bonjour,

Je cherche à mettre en place une contrainte de vérification pour m'assurer que pour une ligne donnée, une valeur n'apparaisse qu'une seule fois dans un ensemble de colonnes. Est-ce que quelqu'un saurait faire ça?

Dans l'exemple ci-dessous, cela consiste à vérifier quand on saisit TOTO que cette valeur n'est pas présente dans les autres colonnes "rangsXX"

id rang01 rang02 rang03 rang04 ... rang35
1  TOTO   TATA    TUTU    TETE        TITI

Merci pour votre aide
Nicolas


Salutations, Nicolas.

Hors ligne

 

#2 Mon 23 August 2021 15:45

tevrard
Participant assidu
Date d'inscription: 23 May 2016
Messages: 319

Re: PostrgeSQL - valeur présente une fois dans plusieurs colonnes

En pivotant la table cela devient plus simple car tu peux mettre une clé sur le couple Id et valeur.
Si c'est bien un classement cela te permet aussi de faire des opérations de ranking avec des max etc...

Ca te donnerait une structure du type

Code:

id   valeur    rang
1    TOTO      01
1    TATA      02

Après ça doit être possible malgré tout de vérifier sans toucher ta table

Dernière modification par tevrard (Mon 23 August 2021 15:45)

Hors ligne

 

#3 Mon 23 August 2021 15:52

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

Re: PostrgeSQL - valeur présente une fois dans plusieurs colonnes

Bonjour,

Vous pouvez créer une check constraint sur la table et préciser dans la contrainte que les valeurs doivent etre uniques, par ex:

Code:

create table test (
    id integer generated always as identity ,
    val1 text,
    val2 text,
    val3 text,
    check (val1 <> val2 and val1 <> val3 and val2 <> val3)
);

Nicolas

Hors ligne

 

#4 Mon 23 August 2021 16:48

tevrard
Participant assidu
Date d'inscription: 23 May 2016
Messages: 319

Re: PostrgeSQL - valeur présente une fois dans plusieurs colonnes

Nicolas Ribot a écrit:

Bonjour,

Vous pouvez créer une check constraint sur la table et préciser dans la contrainte que les valeurs doivent etre uniques, par ex:

Code:

create table test (
    id integer generated always as identity ,
    val1 text,
    val2 text,
    val3 text,
    check (val1 <> val2 and val1 <> val3 and val2 <> val3)
);

Nicolas


je connaissais pas le generated always as identity (jme traine une (très) vieille version de PG)
C'est mieux que le serial?

Sinon vu qu'il y a 35 colonnes à croiser la requête ne semble pas très commode à écrire hmm

Hors ligne

 

#5 Mon 23 August 2021 17:48

n314
Participant assidu
Date d'inscription: 6 Sep 2005
Messages: 692

Re: PostrgeSQL - valeur présente une fois dans plusieurs colonnes

y'a peut être une modélisation plus efficace pour cela ? Non pas les val1...val35 en colonnes, mais en ligne, aka

une colonne id
une colonne clé, qui pourra contenir "valeur1"
une colonne valeur, qui contiendra la valeur pour "valeur1"
un index unique sur (id, valeur)

Hors ligne

 

#6 Wed 25 August 2021 08:07

dhaulagiri
Participant occasionnel
Lieu: Nîmes, Gard
Date d'inscription: 1 Dec 2006
Messages: 46
Site web

Re: PostrgeSQL - valeur présente une fois dans plusieurs colonnes

Bonjour,

Merci pour ces réponses!


Salutations, Nicolas.

Hors ligne

 

#7 Wed 25 August 2021 08:07

dhaulagiri
Participant occasionnel
Lieu: Nîmes, Gard
Date d'inscription: 1 Dec 2006
Messages: 46
Site web

Re: PostrgeSQL - valeur présente une fois dans plusieurs colonnes

Bonjour,

Merci pour ces réponses!


Salutations, Nicolas.

Hors ligne

 

#8 Wed 25 August 2021 08:07

dhaulagiri
Participant occasionnel
Lieu: Nîmes, Gard
Date d'inscription: 1 Dec 2006
Messages: 46
Site web

Re: PostrgeSQL - valeur présente une fois dans plusieurs colonnes

Bonjour,

Merci pour ces réponses!


Salutations, Nicolas.

Hors ligne

 

#9 Thu 26 August 2021 14:09

dhaulagiri
Participant occasionnel
Lieu: Nîmes, Gard
Date d'inscription: 1 Dec 2006
Messages: 46
Site web

Re: PostrgeSQL - valeur présente une fois dans plusieurs colonnes

Bonjour,

Merci pour ces réponses!


Salutations, Nicolas.

Hors ligne

 

Pied de page des forums

Powered by FluxBB