[SQL] Accessing objects over db-borders

2005-02-04 Thread KÖPFERL Robert
Hi,

Consider one postmaster that manages multiple databases (logical names)

Is it possible (and how) to access a stored procedure or view/Table which
resides in DB aaa if your DB-connection has currently the context on DB bbb?

So: I login on db bbb as a user who has rights on both DBs (aaa,bbb). Can I
do a select on a table of DB aaa?

If this is possible I suspect referential integrity not to work, does it?


Thanks

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

   http://www.postgresql.org/docs/faq


Re: [despammed] [SQL] Accessing objects over db-borders

2005-02-04 Thread Andreas Kretschmer
am  04.02.2005, um 12:00:17 +0100 mailte KÖPFERL Robert folgendes:
> Hi,
> 
> Consider one postmaster that manages multiple databases (logical names)
> 
> Is it possible (and how) to access a stored procedure or view/Table which
> resides in DB aaa if your DB-connection has currently the context on DB bbb?

Yes, take a look at dblink (contrib-package)


Andreas
-- 
Andreas Kretschmer(Kontakt: siehe Header)
Heynitz:  035242/47212,  D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
 ===Schollglas Unternehmensgruppe=== 

---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [SQL] getting back autonumber just inserted

2005-02-04 Thread Richard_D_Levine
I don't work with M$ DBs, but saw that "autonumber" is an M$ concept.
Purely for my own edification, how do you get the most resent value of an
autonumber in M$?  I was helping someone out who was using M$ stuff and was
amazed that there was no currval function.

Thanks,

Rick



 
  Scott Marlowe 
 
  <[EMAIL PROTECTED]To:   lorid <[EMAIL 
PROTECTED]> 
  orks.com>  cc:   
pgsql-sql@postgresql.org  
  Sent by:   Subject:  Re: [SQL] getting 
back autonumber just inserted   
  [EMAIL PROTECTED] 
   
  tgresql.org   
 

 

 
  02/03/2005 05:16 PM   
 

 

 




On Thu, 2005-02-03 at 16:16, lorid wrote:
> I could have sworn I kept a copy of prior emails that discussed how to
> get back a value that was just inserted into a autonumber (or in
> postgresql case a sequence number)


If you know the name of the sequence the number came from you can use
currval():

insert into table1 (info) values ('abc');
select currval('table1seq');

Assuming table1seq is the name of the sequence here.

In 8.0 there's a function to do this (I'm not sure of the name, but a
quick search of the 8.0 docs should turn it up.)

---(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




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

   http://archives.postgresql.org


Re: [SQL] getting back autonumber just inserted

2005-02-04 Thread Magnus Hagander
> I don't work with M$ DBs, but saw that "autonumber" is an M$ concept.
> Purely for my own edification, how do you get the most resent 
> value of an autonumber in M$?  I was helping someone out who 
> was using M$ stuff and was amazed that there was no currval function.

I beleive they call it IDENTITY and not autonumber.
You get it using either 
SELECT @@IDENTITY
or
SELECT SCOPE_IDENTITY()

depending on if you want the very latest identity or the latest int he
current scope (if you have a trigger inserting records in a different
table, they will differ - @@IDENTITY will return from the table affected
by the trigger, SCOPE_IDENTITY() will return it for the table *you*
updated)

//Magnus

---(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] Determining Rank

2005-02-04 Thread Don Drake
Michael,

That's an excellent solution, but on my table, the explain plan sucks
and the query time is over 3 minutes when implemented.  Is there a
simple way to get a row_num without using a temporary sequence?

Thanks for your help.

-Don


On Fri, 4 Feb 2005 14:02:20 +0900, Michael Glaesemann
<[EMAIL PROTECTED]> wrote:
> 
> On Feb 4, 2005, at 12:06, Don Drake wrote:
> 
> > I have a query that shows the top N count(*)'s.
> >
> > So it's basically:
> >
> > select some_val, count(*)
> > from big_table
> > group by some_val
> > order by count(*)
> > limit 50
> >
> > Now, I would like to have the rank included in the result set.  The
> > first row would be 1, followed by 2, etc. all the way to 50.
> 
> There are a couple of different ways to go about this. One is just to
> append an extra column that's basically a line number, but I find it
> doesn't handle ties very elegantly. The following example uses a
> correlated subquery using HAVING to determine the rank as "the number
> of items that have a total quantity greater than the current item + 1".
> Note that items bar and baz have exactly the same totals and are tied,
> while the rank of bat shows that there are 3 items that have totals
> greater than bat.
> 
> Joe Celko's "SQL for Smarties" has a bunch of things like this in it.
> I've found it quite helpful.
> 
> Hope this helps.
> 
> Michael Glaesemann
> grzm myrealbox com
> 
> create table items (
>  item text not null
>  , qty integer not null
> ) without oids;
> 
> insert into items (item, qty) values ('foo', 1);
> insert into items (item, qty) values ('foo', 2);
> insert into items (item, qty) values ('foo', 1);
> insert into items (item, qty) values ('foo', 3);
> insert into items (item, qty) values ('foo', 3);
> insert into items (item, qty) values ('foo', 20);
> insert into items (item, qty) values ('foo', 1);
> insert into items (item, qty) values ('bar', 3);
> insert into items (item, qty) values ('bar', 1);
> insert into items (item, qty) values ('bar', 3);
> insert into items (item, qty) values ('bar', 13);
> insert into items (item, qty) values ('baz', 2);
> insert into items (item, qty) values ('baz', 4);
> insert into items (item, qty) values ('baz', 14);
> insert into items (item, qty) values ('bat', 3);
> insert into items (item, qty) values ('bat', 4);
> 
> select item, sum(qty) as tot_qty
> from items
> group by item
> order by tot_qty desc;
> 
>   item | tot_qty
> --+-
>   foo  |  31
>   bar  |  20
>   baz  |  20
>   bat  |   7
> (4 rows)
> 
> select i1.item
>  , i1.tot_qty
>  , ( select count(*)
>  from (
>  select item
>  , sum(qty) as tot_qty
>  from items
>  group by item
>  having sum(qty) > i1.tot_qty
>  ) as i2
>  ) + 1 as rank
> from (
>  select item
>  , sum(qty) as tot_qty
>  from items
>  group by item
>  ) as i1
> order by i1.tot_qty desc;
> 
>   item | tot_qty | rank
> --+-+--
>   foo  |  31 |1
>   bar  |  20 |2
>   baz  |  20 |2
>   bat  |   7 |4
> (4 rows)
> 
> 


-- 
Donald Drake
President
Drake Consulting
http://www.drakeconsult.com/
http://www.MailLaunder.com/
312-560-1574

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


Re: [SQL] Determining Rank

2005-02-04 Thread PFC

Michael,
That's an excellent solution, but on my table, the explain plan sucks
and the query time is over 3 minutes when implemented.  Is there a
simple way to get a row_num without using a temporary sequence?
Thanks for your help.
-Don
	Make your query a set returning function which iterates over the query  
results and returns a number as well ?

---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
   (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])