From: | Frank Joerdens <frank(at)joerdens(dot)de> |
---|---|
To: | Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org, hank(at)fas-art(dot)com, annette(at)fas-art(dot)com |
Subject: | Re: Looking for the correct solution for a generic problem. |
Date: | 2002-02-07 22:04:48 |
Message-ID: | 20020207230448.B6766@superfly.archi-me-des.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Thu, Feb 07, 2002 at 01:31:03PM -0800, Stephan Szabo wrote:
> On Thu, 7 Feb 2002, Frank Joerdens wrote:
>
> > Now I want to retrieve rows from A as in
> >
> > SELECT DISTINCT A.foo
> > FROM A,B
> > WHERE A.foo [matches some criteria]
> > OR B.bar [matches some other criteria]
> > AND A.id = B.a_id;
> >
> > This works fine if there is *at least* one row in B for each row in A.
> > If there isn't, I obviously get 0 results even if the column foo in A
> > matches the desired criteria. But I do want the rows from A even if
> > there is no row in B that is linked to those rows in A that match the
> > criteria. If the column bar in B matches the desired criteria, I also
> > want the rows in A that are linked to those rows in B.
>
> Sounds like you want a left outer join.
>
> Maybe...
> select distinct a.foo from
> a left outer join b on (a.ID = b.a_id)
> where a.foo [matches] or B.bar [matches]
Ah! There indeed is an entire little chapter (6.6.3) in my 'Fundamentals
of Database Systems' (Elmasri/Navathe) on this, and Bruce talks about it
too . . . albeit saying (in my version of his book) that joins ain't
supported in 7.0 and that you need to simulate 'em using UNION ALL and
subqueries.
The problem here was a combination of hubris and laziness on my part: I
thought I didn't need to learn about join syntax because I figured it
could all be done with boolean logic as in my query example above . . .
Thanks!
Frank
From | Date | Subject | |
---|---|---|---|
Next Message | Frank Joerdens | 2002-02-07 22:25:13 | ALTER TABLE and dropping a column |
Previous Message | Tom Lane | 2002-02-07 21:50:53 | Re: Looking for the correct solution for a generic problem. |