Problem with joining two tables

From: Przemyslaw Bojczuk <pb2(at)gis(dot)umcs(dot)lublin(dot)pl>
To: pgsql-general(at)postgresql(dot)org
Subject: Problem with joining two tables
Date: 2007-12-05 13:42:32
Message-ID: 20071205144232.65fcb8ec.pb2@gis.umcs.lublin.pl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello!

I have a problem joining two tables. I tried various types of join and
none seems to work as I expect

Table 1:

id | stuff
-----------
1 | sth1
2 | sth2
3 | sth3
4 | sth4
5 | sth5
.. | ...

Table 2:

id | desc | etc
------------------
1 | desc1 | etc1
2 | desc2 | etc2
2 | desc3 | etc3
2 | desc4 | etc4
3 | desc5 | etc5
| desc6 | etc6
5 | desc7 | etc7
.. | ... | ...

I need something like:

id | stuff | desc | etc
-------------------------
1 | sth1 | desc1 | etc1
2 | sth2 | desc2 | etc2
2 | sth2 | desc3 | etc3
2 | sth2 | desc4 | etc4
3 | sth3 | desc5 | etc5
5 | sth5 | desc7 | etc7

So: join by id, discard rows that don't match any row from the other
table, add separate row for each row from table 2 that matches the same
row from table 1.

So far the best I could get (using inner join) was something like:

id | stuff | desc | etc
-------------------------
1 | sth1 | desc1 | etc1
2 | sth2 | desc2 | etc2
2 | sth2 | desc2 | etc2
2 | sth2 | desc2 | etc2
3 | sth3 | desc5 | etc5
5 | sth5 | desc7 | etc7

(i.e. multiplied one row from table 2 instead of separate rows matching
the same row from table 1)

right/left/full (outer) also seem to do the same thing (multiply one
row) and I don't know any other join methods.

Is there a way to accomplish what I am trying to do? Or maybe I am
missing something?

Thanks in advance!
PB
--
Geographical Information Systems Laboratory
Institute of Earth Sciences, UMCS
http://gis.umcs.lublin.pl/en/

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Robert Treat 2007-12-05 13:50:07 Re: Moving pgstat.stat and pgstat.tmp
Previous Message Joshua D. Drake 2007-12-05 13:00:33 Re: [GENERAL] PostgreSQL Beta4 released