Rewrite without correlated subqueries

From: bricklen <bricklen(at)gmail(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Rewrite without correlated subqueries
Date: 2009-08-20 20:32:54
Message-ID: 33b743250908201332k5e7b0e3fga71a1ec6b44f302a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi All,

I'm having some trouble wrapping my head around the syntax to rewrite a
query using correlated subqueries, to using outer joins etc.

The query:

SELECT ps.userid,
SUM( ps.hits ) as numhits
FROM primarystats AS ps
INNER JOIN camp ON camp.id = ps.idcamp
INNER JOIN sites ON sites.id = ps.idsite
WHERE camp.idcatprimary NOT IN ( SELECT idcategory FROM sitescategory WHERE
sitescategory.idsites = ps.idsites )
AND camp.idcatsecondary NOT IN ( SELECT idcategory FROM sitescategory WHERE
sitescategory.idsites = ps.idsites )
GROUP BY ps.userid;

Because I am rewriting this query to use Greenplum, I cannot use correlated
subqueries (they are not currently supported).

Can anyone suggest a version that will garner the same results? I tried with
OUTER JOINS and some IS NULLs, but I couldn't get it right.

Thanks!

bricklen

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Mark Fenbers 2009-08-20 20:40:55 Re: Rewrite without correlated subqueries
Previous Message Rodrigo E. De León Plicet 2009-08-20 16:33:14 Re: using case to select 'which version to use'