| From: | Sam Mason <sam(at)samason(dot)me(dot)uk> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: Find users that have ALL categories |
| Date: | 2010-07-01 11:37:55 |
| Message-ID: | 20100701113755.GE7584@samason.me.uk |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On Thu, Jul 01, 2010 at 04:26:38AM -0700, David Fetter wrote:
> On Wed, Jun 30, 2010 at 12:11:35AM -0700, Nick wrote:
> > Is this the most efficient way to write this query? Id like to get a
> > list of users that have the categories 1, 2, and 3?
> >
> > SELECT user_id FROM user_categories WHERE category_id IN (1,2,3) GROUP
> > BY user_id HAVING COUNT(*) = 3
>
> The above method depends on (user_id, category_id) being unique, and
> excludes users with, say, categories 1, 2, 3 and 4. Are you sure that
> that latter is what you want?
AFAICT, the above code will include a user with categories 1 to 4. Why
do you think otherwise?
If the (user_id,category_id) combination isn't unique, it's easy to
change the HAVING clause into HAVING COUNT(DISTINCT category_id) = 3.
--
Sam http://samason.me.uk/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David Fetter | 2010-07-01 11:43:19 | Re: Find users that have ALL categories |
| Previous Message | David Fetter | 2010-07-01 11:26:38 | Re: Find users that have ALL categories |