From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | tjennette(at)thomasnelson(dot)com (Trace) |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: SQL Joins |
Date: | 2002-01-14 22:01:55 |
Message-ID: | 19527.1011045715@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
tjennette(at)thomasnelson(dot)com (Trace) writes:
> Can someone please tell me what this previously-written SQL is doing?
> I don't understand how it is structured.
Apparently whoever wrote this doesn't believe in parentheses. I'd think
it a lot more readable with parentheses and appropriate indentation,
viz:
FROM
( (eStoreManager.estore_dept_prod LEFT OUTER JOIN eStoreManager.estore_product
ON eStoreManager.estore_dept_prod.sku = eStoreManager.estore_product.sku)
RIGHT OUTER JOIN
(eStoreManager.tblCProductClass LEFT OUTER JOIN eStoreManager.tblCProductClassProduct
ON eStoreManager.tblCProductClass.ProductClassID = eStoreManager.tblCProductClassProduct.ProductClassID)
ON eStoreManager.estore_product.sku = eStoreManager.tblCProductClassProduct.sku)
FULL OUTER JOIN
(eStoreManager.tblCProductClassCreator INNER JOIN eStoreManager.tblCCreator
ON eStoreManager.tblCProductClassCreator.CreatorID = eStoreManager.tblCCreator.CreatorID)
ON eStoreManager.tblCProductClass.ProductClassID = eStoreManager.tblCProductClassCreator.ProductClassID
BTW, since Postgres doesn't have schemas you'd need to lose the
"eStoreManager." prefixes, which aren't doing anything for readability
here either:
FROM
( (estore_dept_prod LEFT OUTER JOIN estore_product
ON estore_dept_prod.sku = estore_product.sku)
RIGHT OUTER JOIN
(tblCProductClass LEFT OUTER JOIN tblCProductClassProduct
ON tblCProductClass.ProductClassID = tblCProductClassProduct.ProductClassID)
ON estore_product.sku = tblCProductClassProduct.sku)
FULL OUTER JOIN
(tblCProductClassCreator INNER JOIN tblCCreator
ON tblCProductClassCreator.CreatorID = tblCCreator.CreatorID)
ON tblCProductClass.ProductClassID = tblCProductClassCreator.ProductClassID
Does that help any?
If you're wondering how I knew where to put the parentheses, it's
because there's no place else they could go and still have a
syntactically valid statement. So I suppose the author felt they
were unnecessary. But I think it's more readable with 'em.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Eckermann | 2002-01-14 22:26:56 | Re: Result sets from functions |
Previous Message | Jason Earl | 2002-01-14 21:55:25 | Re: CREATE TABLE glitch -fix request for 7.2 |