Lists: | pgsql-fr-generale |
---|
From: | "Remi" <remi(at)chillet(dot)com> |
---|---|
To: | <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Comparer des valeurs booléennes |
Date: | 2004-02-19 22:16:25 |
Message-ID: | 003301c3f736$03f3f480$b3952350@dev |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonsoir,
J'ai besoin dans une requete de comparer des valeurs booléennes
SELECT max(bool1), max(bool2) FROM table WHERE condition;
En fait j'aimerai effectuer un 'AND' a la palce du 'max' pour avoir comme resultat : true AND false = true. Pour resumer si j'ai uniquement des false dans la colonne j'aurais comme resulta false. Si j'ai au mojns un true dans la colonne j'aurais comme resulta true. Comment puis faire cette requete car bien evidemment celle de l'exemple me donne une erreur. J'ai essaye aussi de convertir la valeur booléenne en entier mais rien a faire:
SELECT max(CAST(bool1 AS int)), max(CAST(bool2 AS int)) FROM table WHERE condition;
Merci pour vos idees
Remi
From: | Francois Suter <dba(at)paragraf(dot)ch> |
---|---|
To: | Remi <remi(at)chillet(dot)com> |
Cc: | <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: Comparer des valeurs booléennes |
Date: | 2004-02-20 11:21:49 |
Message-ID: | F99ED9B8-6396-11D8-BBBF-000393427520@paragraf.ch |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
> SELECT max(bool1), max(bool2) FROM table WHERE condition;
>
> En fait j'aimerai effectuer un 'AND' a la palce du 'max' pour avoir
> comme resultat : true AND false = true. Pour resumer si j'ai
> uniquement des false dans la colonne j'aurais comme resulta false. Si
> j'ai au mojns un true dans la colonne j'aurais comme resulta true.
> Comment puis faire cette requete car bien evidemment celle de
> l'exemple me donne une erreur. J'ai essaye aussi de convertir la
> valeur booléenne en entier mais rien a faire:
Euh, ben, si tu veux faire un AND, il suffit de le faire:
select bool1 AND bool2 from table;
Ca marche. En tout cas, avec PostgreSQL 7.3.4.
Ceci dit, il me semble que ce que tu veux est un OR, mais ça marche
aussi:
test=> select * from bouboul;
col1 | col2
------+------
t | t
t | f
f | t
f | f
(4 rows)
test=> select col1 OR col2 from bouboul;
?column?
----------
t
t
t
f
(4 rows)
Au fait, tu ne voudrais pas t'inscrire à la liste? Ce serait plus
simple. Là, je suis obligé de valider manuellement chacun de tes
mails... Il suffit d'envoyer un mail à l'adresse suivante:
pgsql-fr-generale(at)postgresql(dot)org
sans sujet et avec la commande suivante dans le corps du mail:
subscribe pgsql-fr-generale remi(at)chillet(dot)com
A+
---------------
Francois
Home page: http://www.monpetitcoin.com/
"Nous sommes peu à penser trop, trop à penser peu." - Françoise Sagan
From: | "Remi" <remi(at)chillet(dot)com> |
---|---|
To: | "Francois Suter" <dba(at)paragraf(dot)ch> |
Cc: | <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: [pgsql-fr-generale] Comparer des valeurs booléennes |
Date: | 2004-02-24 23:41:16 |
Message-ID: | 007901c3fb2f$b313cd80$b3952350@dev |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonsoir,
Oui effectivement le resonnement est juste dans ton exemple mai j'ai besoin
de comparer les resultats de toutes les lignes d'une colonne. Je veux un OR
en effet:
col1 | col2
------+------
t | f
t | f
f | f
f | f
t |f --> Voila le resultat que je recherche
Il y a bien la solution de remplacer true et false par 1 et 0 et de par le
fait
SELECT max(col1), max(col2) FROM table WHERE condition
fonctionnerai mais je prefererais trouver une solution avec les valeurs
booléennes ;-)
----- Original Message -----
From: "Francois Suter" <dba(at)paragraf(dot)ch>
To: "Remi" <remi(at)chillet(dot)com>
Cc: <pgsql-fr-generale(at)postgresql(dot)org>
Sent: Friday, February 20, 2004 12:21 PM
Subject: Re: [pgsql-fr-generale] Comparer des valeurs booléennes
> > SELECT max(bool1), max(bool2) FROM table WHERE condition;
> >
> > En fait j'aimerai effectuer un 'AND' a la palce du 'max' pour avoir
> > comme resultat : true AND false = true. Pour resumer si j'ai
> > uniquement des false dans la colonne j'aurais comme resulta false. Si
> > j'ai au mojns un true dans la colonne j'aurais comme resulta true.
> > Comment puis faire cette requete car bien evidemment celle de
> > l'exemple me donne une erreur. J'ai essaye aussi de convertir la
> > valeur booléenne en entier mais rien a faire:
>
> Euh, ben, si tu veux faire un AND, il suffit de le faire:
>
> select bool1 AND bool2 from table;
>
> Ca marche. En tout cas, avec PostgreSQL 7.3.4.
>
> Ceci dit, il me semble que ce que tu veux est un OR, mais ça marche
> aussi:
>
> test=> select * from bouboul;
> col1 | col2
> ------+------
> t | t
> t | f
> f | t
> f | f
> (4 rows)
>
> test=> select col1 OR col2 from bouboul;
> ?column?
> ----------
> t
> t
> t
> f
> (4 rows)
From: | Francois Suter <dba(at)paragraf(dot)ch> |
---|---|
To: | "Remi" <remi(at)chillet(dot)com> |
Cc: | <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: Comparer des valeurs booléennes |
Date: | 2004-02-27 12:28:39 |
Message-ID: | 7900025E-6920-11D8-AA13-000393427520@paragraf.ch |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Salut,
> Oui effectivement le resonnement est juste dans ton exemple mai j'ai
> besoin
> de comparer les resultats de toutes les lignes d'une colonne. Je veux
> un OR
> en effet:
Ah oui, je comprends la différence, maintenant. A mon avis, ce n'est
pas possible de manière simple. Je pense qu'il faut écrire une fonction
en PL/PgSQL ou autre langage supporté par PostgreSQL, mais je n'ai
encore jamais fait ça et je ne saurais pas comment m'y prendre.
Quelqu'un s'y connaît là?
A+
---------------
Francois
Home page: http://www.monpetitcoin.com/
"Nous sommes peu à penser trop, trop à penser peu." - Françoise Sagan
From: | Hervé Piedvache <herve(at)elma(dot)fr> |
---|---|
To: | "Remi" <remi(at)chillet(dot)com>, "Francois Suter" <dba(at)paragraf(dot)ch> |
Cc: | <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: Re: [pgsql-fr-generale] Comparer des valeurs booléennes |
Date: | 2004-02-27 17:58:06 |
Message-ID: | 200402271858.06282.herve@elma.fr |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Remi,
Je ne sais pas bien si ca répond à ton problème, mais est-ce que cette
solution te satisfait ?
select case when exists (select 'x' from table where col1='t') then 't' else
'f' end as col1, case when exists (select 'x' from table where col2='t') then
't' else 'f' end as col2
Cordialement,
Le Mercredi 25 Février 2004 00:41, Remi a écrit :
> Bonsoir,
>
> Oui effectivement le resonnement est juste dans ton exemple mai j'ai
> besoin de comparer les resultats de toutes les lignes d'une colonne. Je
> veux un OR en effet:
>
> col1 | col2
> ------+------
> t | f
> t | f
> f | f
> f | f
>
> t |f --> Voila le resultat que je recherche
>
> Il y a bien la solution de remplacer true et false par 1 et 0 et de par le
> fait
>
> SELECT max(col1), max(col2) FROM table WHERE condition
>
> fonctionnerai mais je prefererais trouver une solution avec les valeurs
> booléennes ;-)
>
>
>
> ----- Original Message -----
> From: "Francois Suter" <dba(at)paragraf(dot)ch>
> To: "Remi" <remi(at)chillet(dot)com>
> Cc: <pgsql-fr-generale(at)postgresql(dot)org>
> Sent: Friday, February 20, 2004 12:21 PM
> Subject: Re: [pgsql-fr-generale] Comparer des valeurs booléennes
>
> > > SELECT max(bool1), max(bool2) FROM table WHERE condition;
> > >
> > > En fait j'aimerai effectuer un 'AND' a la palce du 'max' pour avoir
> > > comme resultat : true AND false = true. Pour resumer si j'ai
> > > uniquement des false dans la colonne j'aurais comme resulta false. Si
> > > j'ai au mojns un true dans la colonne j'aurais comme resulta true.
> > > Comment puis faire cette requete car bien evidemment celle de
> > > l'exemple me donne une erreur. J'ai essaye aussi de convertir la
> > > valeur booléenne en entier mais rien a faire:
> >
> > Euh, ben, si tu veux faire un AND, il suffit de le faire:
> >
> > select bool1 AND bool2 from table;
> >
> > Ca marche. En tout cas, avec PostgreSQL 7.3.4.
> >
> > Ceci dit, il me semble que ce que tu veux est un OR, mais ça marche
> > aussi:
> >
> > test=> select * from bouboul;
> > col1 | col2
> > ------+------
> > t | t
> > t | f
> > f | t
> > f | f
> > (4 rows)
> >
> > test=> select col1 OR col2 from bouboul;
> > ?column?
> > ----------
> > t
> > t
> > t
> > f
> > (4 rows)
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
--
Hervé Piedvache
Elma Ingénierie Informatique
6 rue du Faubourg Saint-Honoré
F-75008 - Paris - France
Pho. 33-144949901
Fax. 33-144949902