Simple Question, hard answer - Mailing list pgsql-general

From Matthew
Subject Simple Question, hard answer
Date
Msg-id A043233669F9D111B99700A0C92376CA0DD6C9@srv.ctlno.com
Whole thread Raw
Responses Re: [GENERAL] Simple Question, hard answer
List pgsql-general
Is there an easier way to do this?

I have a document table, and a keyword table, there is a many to many
relation ship between the two via a link table.  What I want to do is
select all the documents that have two or more keywords.  That is select
.... where keywords.keyword = 'foo1' and keywords.keyword = 'foo2';  The
problem is that after joining the document table to the link table to
the keywords table there is no row that satisfies the criteria.  This
seems like something that would have to be done a lot so I'm wondering
if there is a simple way to do it.  We have accomplished it with the
following SQL statement

select documents.docid, count(documents.docid) as docidcount,
keywords.keyword from documents, link, keywords where (documents.docid =
link.docid and keywords.keyid = link.keyid) and (keyword = 'foo1' or
keyword = 'foo2' ) group by docid having docidcount > 2;

Is there a more efficient way to execute this query?  Sub selects or
something?

Thanks,



pgsql-general by date:

Previous
From: Michael Davis
Date:
Subject: RE: [ADMIN] delete data
Next
From: "Jonathan A. Zdziarski"
Date:
Subject: Re: [GENERAL] Simple Question, hard answer