From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Richard Rowell" <richard(at)bowmansystems(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Outer Join Syntax |
Date: | 2001-08-01 18:06:03 |
Message-ID: | 10530.996689163@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
"Richard Rowell" <richard(at)bowmansystems(dot)com> writes:
> outer join syntax. MS has some nice syntactical sugar with the *=/=*
> operators that Postgres dosen't seem to support.
Some of us view it as "nonstandard and broken", not as "nice syntactical
sugar" ;-).
> I'm just not grasping how one would accomplish the same using the SQL-92
> syntax.
SELECT ...
FROM ASSESSMENT_MEDICAL a
LEFT JOIN AGENCIES ag ON a.Agency_creating = ag.Agency_id
LEFT JOIN YESNO_TYPES02 y1 ON a.Health_prob = y1.Yesno_code
LEFT JOIN ...
WHERE a.inactive != 'Y' AND a.Client_id = $Edit_Client_id;
While this is more typing, it's clear which conditions determine
joinability and which are filters on the overall result, which is a
critical semantic issue that the Oracle/MS syntax fails miserably on.
For example, suppose I want to add a constraint like y1.col3 = 'foo'.
Now, if there are no rows meeting that constraint for a given value of
a.Health_prob = y1.Yesno_code, does that mean I want to have
ASSESSMENT_MEDICAL rows with that Health_prob show up with nulls
substituted for the y1 fields? Or does it mean that I don't want to see
those rows at all? AFAICS there's no way to make that distinction with
the Oracle/MS approach. With the standard syntax, you put the
additional constraint in ON in one case, and in WHERE in the other case.
The standard syntax also allows you to control the join order by
parenthesization, which is not so important for your star-query
example, but is critical if you want to join two outer-join results
together --- otherwise, you can't control which combinations result
in partially-NULL rows out, and which result in no rows out.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2001-08-02 15:50:32 | Re: where'd the spaces come from |
Previous Message | Joe Conway | 2001-08-01 17:28:27 | Re: Outer Join Syntax |