pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Andreas Haumer <andreas@xss.co.at>
To: David Garamond <lists@zara.6.isreserved.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: Displaying two tables side by side
Date: Wed, 11 Aug 2004 19:37:58 +0200
Message-ID: <411A5976.4090502@xss.co.at> (raw)
In-Reply-To: <411A2926.9020500@zara.6.isreserved.com>
References: <411A2926.9020500@zara.6.isreserved.com>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi!

David Garamond wrote:
> How can you display two tables side by side? Example:
>
>> select * from t1;
>  a | b
> ---+---
>  2 | 2
>  3 | 5
>  4 | 7
>  9 | 0
>
>> select * from t2;
>  c | d
> ---+---
>  4 | 5
>  7 | 3
>  3 | 2
>  1 | 1
>  2 | 0
>
> Intended output:
>  a | b | c | d
> ---+---+---+---
>  2 | 2 | 4 | 5
>  3 | 5 | 7 | 3
>  4 | 7 | 3 | 2
>  9 | 0 | 1 | 1
>    |   | 2 | 0
>
> Each table has no keys (and no OIDs). Order is not important, but each
> row from each table needs to be displayed exactly once.
>
You could try to use PosgreSQL's ctid system column to join on like this:

test=# select *,ctid from t1;
 a | b | ctid
- ---+---+-------
 2 | 2 | (0,1)
 3 | 5 | (0,2)
 4 | 7 | (0,3)
 9 | 0 | (0,4)


test=# select *,ctid from t2;
 c | d | ctid
- ---+---+-------
 4 | 5 | (0,1)
 7 | 3 | (0,2)
 3 | 2 | (0,3)
 1 | 1 | (0,4)
 2 | 0 | (0,5)


test=# select * from t1 right outer join t2 on (t1.ctid=t2.ctid);
 a | b | c | d
- ---+---+---+---
 2 | 2 | 4 | 5
 3 | 5 | 7 | 3
 4 | 7 | 3 | 2
 9 | 0 | 1 | 1
   |   | 2 | 0


Note that this is of course very platform specific. On Oracle
you could use rownum, for example.
I don't have a more portable solution on hand right now.

HTH

- - andreas

- --
Andreas Haumer                     | mailto:andreas@xss.co.at
*x Software + Systeme              | http://www.xss.co.at/
Karmarschgasse 51/2/20             | Tel: +43-1-6060114-0
A-1100 Vienna, Austria             | Fax: +43-1-6060114-71
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFBGll0xJmyeGcXPhERApQ5AKCrOdLg4i6UpycLUGWxTLIpe68C6QCgk2UP
gcXbeO6VEw95obz1D8GQFQk=
=Ksq6
-----END PGP SIGNATURE-----




view thread (6+ messages)  latest in thread

Message-ID: <411A5976.4090502@xss.co.at>
Permalink:  ../411A5976.4090502@xss.co.at/
Also on:    postgresql.org/message-id/411A5976.4090502@xss.co.at

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: andreas@xss.co.at, lists@zara.6.isreserved.com
  Subject: Re: Displaying two tables side by side
  In-Reply-To: <411A5976.4090502@xss.co.at>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox