Re: [SQL] How do you write this query?

2002-10-31 Thread Jean-Luc Lachance
Thank goodness for nested select!

select data1 from test where data2 = ( select distinct data2 from test
where data1 = 'pooh') and data = 3;

JLL

Richard Huxton wrote:
 
 On Thursday 31 Oct 2002 6:21 pm, Wei Weng wrote:
   data | data1 | data2
  --+---+---
  1 | foo   | bar
  2 | greg  | bar
  3 | pooh  | bar
  4 | dah   | peng
 
  I need a query that returns me the data1 that satisfies the logic of
  the following pseudo code:
 
  1: select data2 into @out from test where data1 = 'pooh'
  2: select data1 from test where data2 = @out and data = 3
 
 The most literal would be something like:
 
 SELECT t1.data1 FROM test t1
 WHERE t1.data=3 AND t1.data2 IN
 (SELECT t2.data2
 FROM test t2
 WHERE t2.data1='pooh')
 
 You can probably get away without the t1/t2 stuff but that should make things
 clear.
 
 Since Postgresql isn't very good at optimising IN, you might want to rewrite
 it as an EXISTS query instead - see the manuals and mailing list archives for
 details.
 
 HTH
 --
   Richard Huxton
 
 ---(end of broadcast)---
 TIP 5: Have you checked our extensive FAQ?
 
 http://www.postgresql.org/users-lounge/docs/faq.html

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]



Re: [SQL] psql history

2002-10-31 Thread Robert Treat
On Mon, 2002-10-28 at 14:57, [EMAIL PROTECTED] wrote: 
 Hi everibody,
 i have installed Postgres 7.2.2 from a tarball, but using psql i can not
 have the history of the last command.
 When i used Postgres from rpm this useful element worked very well! 
 Why that?
 
I didn't see any other response to this, but your problem is that for
some reason when you built the file from the tarball, it didn't pick up
on your readline utilities.  You might want to check your configure
output, it might hold a clue as to what went wrong.  If not, do a search
on the archives (probably the general list would be more fruitful) as
this comes up quite often. 

Robert Treat 



---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster



[SQL] Returning a recordset and filling datatable in a .NET application

2002-10-31 Thread Jonas Wouters


Hi,

I have a problem with using .NET and PostgreSQL. In a previous thread called
 I noticed that it is possible to use and create functions that return
tuples or RecordSets. I now want to use them in .NET. 

I followed the instructions which are available at :
http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html these
work in the standard psql client :

I created the function using the following :

CREATE FUNCTION public.p0012_fetch_supplier(varchar, varchar, refcursor)
RETURNS refcursor AS '
BEGIN
OPEN $3 FOR SELECT * FROM SUPP_T WHERE CODE = $1 AND DSRCODE =
$2;
RETURN $3;
END;
'  LANGUAGE 'plpgsql' VOLATILE;


Then I did these in psql :

SBA=# BEGIN;
BEGIN
SBA=# SELECT p0012_fetch_supplier('1','1','funccursor');
 p0012_fetch_supplier
--
 funccursor
(1 row)

SBA=# FETCH ALL IN funccursor;
DSRCODE | CODE 
 1   | 1
(1 row)

SBA=# COMMIT;
COMMIT

The results tell me that the function works. (whoohoo)

But when I do the same thing in a .Net application, I get an empty DataTable
(row count = 0)

This is what I do in .Net 5and I do know that most of you people dislike
.NET and actually .. that is not the issue for me :), I just want this to
work because we are going to need this for our application)


Dim CN As New Microsoft.Data.Odbc.OdbcConnection(DSN=PostgreSQL30)
Dim CM As New Microsoft.Data.Odbc.OdbcCommand(BEGIN; SELECT 
p0012_fetch_supplier('1','1','funccursor'); FETCH ALL IN 
funccursor; COMMIT;, CN)
Dim DA As New Microsoft.Data.Odbc.OdbcDataAdapter(CM)
Dim DT As New DataTable()
Try

CM.CommandType = CommandType.Text
DA.SelectCommand.Connection.Open()
DA.Fill(DT)
DA.SelectCommand.Connection.Close()
Catch ex As Microsoft.Data.Odbc.OdbcException
Debug.WriteLine(ex.Message)
Debug.WriteLine(ex.Source)
Debug.WriteLine(ex.HelpLink)
Finally
CN.Close()

It does not raise an exception so there are no real 'errors'; it just does
not give 'data' to the ADO.NET container.

If I am asking this in the wrong mailinglist, then please point me in the
right direction. I don't think that I will get a answer at Microsoft.com so
that is why I ask it here ..


Thx in advance
Jonas


---(end of broadcast)---
TIP 6: Have you searched our list archives?

http://archives.postgresql.org



Re: [SQL] Returning a recordset and filling datatable in a .NET

2002-10-31 Thread Achilleus Mantzios
On Thu, 31 Oct 2002, Jonas Wouters wrote:

Hi altho i doubt anybody here has any .net experience,
i'll give my bet.

try to place your sql commands in such a way the the
FETCH ALL command is the last in the stream,
(that is get rid of begin,commit statements)



 Hi,

 I have a problem with using .NET and PostgreSQL. In a previous thread called
  I noticed that it is possible to use and create functions that return
 tuples or RecordSets. I now want to use them in .NET.

 I followed the instructions which are available at :
 http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html these
 work in the standard psql client :

 I created the function using the following :

 CREATE FUNCTION public.p0012_fetch_supplier(varchar, varchar, refcursor)
 RETURNS refcursor AS '
 BEGIN
   OPEN $3 FOR SELECT * FROM SUPP_T WHERE CODE = $1 AND DSRCODE =
 $2;
 RETURN $3;
 END;
 '  LANGUAGE 'plpgsql' VOLATILE;


 Then I did these in psql :

 SBA=# BEGIN;
 BEGIN
 SBA=# SELECT p0012_fetch_supplier('1','1','funccursor');
  p0012_fetch_supplier
 --
  funccursor
 (1 row)

 SBA=# FETCH ALL IN funccursor;
 DSRCODE | CODE
  1   | 1
 (1 row)

 SBA=# COMMIT;
 COMMIT

 The results tell me that the function works. (whoohoo)

 But when I do the same thing in a .Net application, I get an empty DataTable
 (row count = 0)

 This is what I do in .Net 5and I do know that most of you people dislike
 .NET and actually .. that is not the issue for me :), I just want this to
 work because we are going to need this for our application)


 Dim CN As New Microsoft.Data.Odbc.OdbcConnection(DSN=PostgreSQL30)
 Dim CM As New Microsoft.Data.Odbc.OdbcCommand(BEGIN; SELECT
   p0012_fetch_supplier('1','1','funccursor'); FETCH ALL IN
   funccursor; COMMIT;, CN)
 Dim DA As New Microsoft.Data.Odbc.OdbcDataAdapter(CM)
 Dim DT As New DataTable()
 Try

 CM.CommandType = CommandType.Text
 DA.SelectCommand.Connection.Open()
 DA.Fill(DT)
 DA.SelectCommand.Connection.Close()
 Catch ex As Microsoft.Data.Odbc.OdbcException
 Debug.WriteLine(ex.Message)
 Debug.WriteLine(ex.Source)
 Debug.WriteLine(ex.HelpLink)
 Finally
 CN.Close()

 It does not raise an exception so there are no real 'errors'; it just does
 not give 'data' to the ADO.NET container.

 If I am asking this in the wrong mailinglist, then please point me in the
 right direction. I don't think that I will get a answer at Microsoft.com so
 that is why I ask it here ..


 Thx in advance
 Jonas


 ---(end of broadcast)---
 TIP 6: Have you searched our list archives?

 http://archives.postgresql.org


==
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
Nikis 4, Glyfada
Athens 16610
Greece
tel:+30-10-8981112
fax:+30-10-8981877
email:  [EMAIL PROTECTED]
[EMAIL PROTECTED]


---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]



[SQL] How do you write this query?

2002-10-31 Thread Wei Weng
I have a table 

 Table test
Column  |Type| Modifiers
++--
data| integer| not null 
data1   | character varying(128) | not null
data2   | character varying(128) | not null

(Note: data is NOT the primary key.)

And 
select * from test 
returns


 data | data1 | data2 
--+---+---
1 | foo   | bar 
2 | greg  | bar
3 | pooh  | bar
4 | dah   | peng

I need a query that returns me the data1 that satisfies the logic of
the following pseudo code:

1: select data2 into @out from test where data1 = 'pooh'
2: select data1 from test where data2 = @out and data = 3


What do I do?

Thanks!

-- 
Wei Weng
Network Software Engineer
KenCast Inc.



---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly



Re: [SQL] How do you write this query?

2002-10-31 Thread Richard Huxton
On Thursday 31 Oct 2002 6:21 pm, Wei Weng wrote:
  data | data1 | data2
 --+---+---
 1 | foo   | bar
 2 | greg  | bar
 3 | pooh  | bar
 4 | dah   | peng

 I need a query that returns me the data1 that satisfies the logic of
 the following pseudo code:

 1: select data2 into out from test where data1 = 'pooh'
 2: select data1 from test where data2 = out and data = 3

The most literal would be something like:

SELECT t1.data1 FROM test t1
WHERE t1.data=3 AND t1.data2 IN
(SELECT t2.data2 
FROM test t2 
WHERE t2.data1='pooh')

You can probably get away without the t1/t2 stuff but that should make things 
clear.

Since Postgresql isn't very good at optimising IN, you might want to rewrite 
it as an EXISTS query instead - see the manuals and mailing list archives for 
details.

HTH
-- 
  Richard Huxton

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html



Re: [SQL] How do you write this query?

2002-10-31 Thread Achilleus Mantzios
On 31 Oct 2002, Wei Weng wrote:

and yet another equivalent query:

SELECT f1.data1 from test f1,test f2 where f1.data=3 and f1.data2 =
f2.data2 and f2.data1='pooh';

 I have a table

  Table test
 Column|Type| Modifiers
 ++--
 data| integer| not null
 data1   | character varying(128) | not null
 data2   | character varying(128) | not null

 (Note: data is NOT the primary key.)

 And
 select * from test
 returns


  data | data1 | data2
 --+---+---
 1 | foo   | bar
 2 | greg  | bar
 3 | pooh  | bar
 4 | dah   | peng

 I need a query that returns me the data1 that satisfies the logic of
 the following pseudo code:

 1: select data2 into @out from test where data1 = 'pooh'
 2: select data1 from test where data2 = @out and data = 3


 What do I do?

 Thanks!

 --
 Wei Weng
 Network Software Engineer
 KenCast Inc.



 ---(end of broadcast)---
 TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to [EMAIL PROTECTED] so that your
 message can get through to the mailing list cleanly


==
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
Nikis 4, Glyfada
Athens 16610
Greece
tel:+30-10-8981112
fax:+30-10-8981877
email:  [EMAIL PROTECTED]
[EMAIL PROTECTED]


---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly