Обсуждение: select
how would i select all rows where a boolean value is neither t nor f.. ? ie if someone inserted without setting the boolean tag. Jeff MacDonald, ----------------------------------------------------- PostgreSQL Inc | Hub.Org Networking Services jeff@pgsql.com | jeff@hub.org www.pgsql.com | www.hub.org 1-902-542-0713 | 1-902-542-3657 ----------------------------------------------------- Fascimile : 1 902 542 5386 IRC Nick : bignose
Hi, AFAIK, you can't enter a null value in a bool field, it has to be 1 or 0. \Indraneel On Sat, 23 Sep 2000, Jeff MacDonald wrote: > how would i select all rows where a boolean value is neither > t nor f.. ? > > ie if someone inserted without setting the boolean tag. > > Jeff MacDonald, > /************************************************************************. # Indraneel Majumdar ¡ E-mail: indraneel@123india.com # # Bioinformatics Unit (EMBNET node), ¡ URL: http://scorpius.iwarp.com # # Centre for DNA Fingerprinting and Diagnostics, # # Hyderabad, India - 500076 # `************************************************************************/
bignose=# create table test ( bignose(# val1 int4, bignose(# val2 boolean); CREATE bignose=# bignose=# insert into test (val1) values (56); INSERT 322762 1 bignose=# bignose=# select * from test;val1 | val2 ------+------ 56 | (1 row) ta da :) On Sat, 23 Sep 2000, Indraneel Majumdar wrote: > Hi, > > AFAIK, you can't enter a null value in a bool field, it has to be 1 or 0. > > \Indraneel > > On Sat, 23 Sep 2000, Jeff MacDonald wrote: > > > how would i select all rows where a boolean value is neither > > t nor f.. ? > > > > ie if someone inserted without setting the boolean tag. > > > > Jeff MacDonald, > > > > /************************************************************************. > # Indraneel Majumdar � E-mail: indraneel@123india.com # > # Bioinformatics Unit (EMBNET node), � URL: http://scorpius.iwarp.com # > # Centre for DNA Fingerprinting and Diagnostics, # > # Hyderabad, India - 500076 # > `************************************************************************/ > Jeff MacDonald, ----------------------------------------------------- PostgreSQL Inc | Hub.Org Networking Services jeff@pgsql.com | jeff@hub.org www.pgsql.com | www.hub.org 1-902-542-0713 | 1-902-542-3657 ----------------------------------------------------- Fascimile : 1 902 542 5386 IRC Nick : bignose
I'd assume this would work: select * from table where booleanfield is null; Stephan Szabo sszabo@bigpanda.com On Sat, 23 Sep 2000, Jeff MacDonald wrote: > how would i select all rows where a boolean value is neither > t nor f.. ? > > ie if someone inserted without setting the boolean tag.
bingo, thaks On Sat, 23 Sep 2000, Stephan Szabo wrote: > > I'd assume this would work: > select * from table where booleanfield is null; > > Stephan Szabo > sszabo@bigpanda.com > > On Sat, 23 Sep 2000, Jeff MacDonald wrote: > > > how would i select all rows where a boolean value is neither > > t nor f.. ? > > > > ie if someone inserted without setting the boolean tag. > > Jeff MacDonald, ----------------------------------------------------- PostgreSQL Inc | Hub.Org Networking Services jeff@pgsql.com | jeff@hub.org www.pgsql.com | www.hub.org 1-902-542-0713 | 1-902-542-3657 ----------------------------------------------------- Fascimile : 1 902 542 5386 IRC Nick : bignose
Hi, there, <p>only possible is null, so select blah from tableblah where field is null; <p>Jeff MacDonald wrote: <blockquotetype="CITE">how would i select all rows where a boolean value is neither <br />t nor f.. ? <p>ie if someone insertedwithout setting the boolean tag. <p>Jeff MacDonald, <p>----------------------------------------------------- <br/>PostgreSQL Inc | Hub.Org Networking Services <br />jeff@pgsql.com | jeff@hub.org <br />www.pgsql.com | www.hub.org <br />1-902-542-0713 | 1-902-542-3657 <br />-----------------------------------------------------<br />Fascimile : 1 902 542 5386 <br />IRC Nick : bignose</blockquote><pre>-- Jie LIANG Internet Products Inc. 10350 Science Center Drive Suite 100, San Diego, CA 92121 Office:(858)320-4873 jliang@ipinc.com www.ipinc.com</pre>
roberto wrote:
> Dear friends,
> I have this table
>
> table work{
> day date,
> hour integer,
> }
>
> select * from work;
>
> date | text
> -----------
> 1-1-2003 1
> 1-1-2003 1
> 2-1-2003 5
> 3-1-2003 10
> 5-1-2003 15
>
> how can i obtain this?
>
> date | text
> -----------
> 1-1-2003 2
> 2-1-2003 5
> 3-1-2003 10
> 4-1-2003 null
> 5-1-2003 15
> 6-1-2003 null
>
>
First , you need a sequence of days. Just create
a function like this:
CREATE OR REPLACE FUNCTION dateseq ( DATE , DATE )
RETURNS SETOF DATE
LANGUAGE 'plpgsql'
AS ' DECLARE bdate ALIAS FOR $1 ; edate ALIAS FOR $2 ; cdate DATE ; BEGIN cdate := bdate; WHILE cdate
<=edate LOOP RETURN NEXT cdate ; cdate := CAST ( cdate + interval ''1 day'' AS date ); END LOOP;
RETURN; END;
';
The function is like a table/view , where the fist function argument
is the start date , the second argument is the end date.
Now try :
SELECT ds.day, sum(w.hour)
FROM dateseq( '2003-1-1', '2003-1-6' ) AS ds (day)
LEFT JOIN work w ON ds.day=w.day
GROUP BY ds.day;
Regards, Janko
--
Janko Richter