Re: INNER JOINS in sql-select.html

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Henry B(dot) Hotz" <hotz(at)jpl(dot)nasa(dot)gov>
Cc: Stefan Weiss <spaceman-4b9f8-20030703(at)ausgehaucht(dot)sensenmann(dot)at>, pgsql-docs(at)postgresql(dot)org
Subject: Re: INNER JOINS in sql-select.html
Date: 2003-11-04 00:38:21
Message-ID: 17695.1067906301@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs

"Henry B. Hotz" <hotz(at)jpl(dot)nasa(dot)gov> writes:
> You can imply the issue without obfuscating things. How about:

> A CROSS JOIN or INNER JOIN is a simple Cartesian product, the same
> as you get from listing the two items at the top level of FROM.
> CROSS JOIN yields the same results as INNER JOIN ON (TRUE), that is,
> no rows are removed by qualification.

Okay, but that doesn't do the trick --- it implies that CROSS JOIN isn't
equivalent to INNER JOIN ON (TRUE), when in fact they are equivalent,
both as to result and performance characteristics. The issue at hand is
that an explicit "a JOIN b" may not be equivalent to "FROM a, b".

I reworded the passage as

CROSS JOIN and INNER JOIN
produce a simple Cartesian product, the same result as you get from
listing the two items at the top level of FROM,
but restricted by the join condition (if any).
CROSS JOIN is equivalent to INNER JOIN ON
(TRUE), that is, no rows are removed by qualification.

does that help?

regards, tom lane

In response to

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message Henry B. Hotz 2003-11-04 01:35:11 Re: INNER JOINS in sql-select.html
Previous Message Henry B. Hotz 2003-11-03 23:08:05 Re: INNER JOINS in sql-select.html