Simple Question, hard answer

From: Matthew <matt(at)ctlno(dot)com>
To: Postgres-General <pgsql-general(at)postgreSQL(dot)org>
Subject: Simple Question, hard answer
Date: 1999-03-18 17:49:13
Message-ID: A043233669F9D111B99700A0C92376CA0DD6C9@srv.ctlno.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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,

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jonathan A. Zdziarski 1999-03-18 17:58:56 Re: [GENERAL] Simple Question, hard answer
Previous Message Michael Davis 1999-03-18 17:25:07 RE: [ADMIN] delete data