Re: One to many query question - Mailing list pgsql-sql

From Richard Poole
Subject Re: One to many query question
Date
Msg-id 20030730211247.GA8892@guests.deus.net
Whole thread Raw
In response to One to many query question  (Dave Dribin <dave-ml@dribin.org>)
List pgsql-sql
On Wed, Jul 30, 2003 at 02:35:20PM -0500, Dave Dribin wrote:
> Hi, I'm having trouble with what I think should be an easy query.  For
> simplicity, I will use a CD database as an example.  Each CD may have
> multiple genres.  Here's some sample data:
> 
> Artist                  Title                           Genres
> ----------------------  ------------------------------  ----------------
> Miles Davis        Some Kind of Blue        Jazz
> Metallica        Ride the Lightning        Rock
> Chemical Brothers    Surrender            Electronic
> Radiohead        OK Computer            Rock, Electronic
> 
> For simplicities sake, let's ignore normalization on artist and genre,
> and say the tables look like:
> 
> CREATE TABLE cd (
>     id integer unique,
>     artist varchar(25),
>     title varchar(25)
> );
> 
> CREATE TABLE cd_genres (
>     cd_id integer,
>     genre varchar(25)
> );

Assuming that each CD can have several rows in cd_genres,

SELECT id, artist, title
FROM cd
WHERE id NOT IN ( SELECT cd_id FROM cd_genres WHERE genre = 'Rock' );

will do what you want. Your co-worker is perhaps used to certain lesser
databases which don't support subselects...

Richard


pgsql-sql by date:

Previous
From:
Date:
Subject: Does a the block of code within a stored procedure constitute a transaction?
Next
From: "Keith H.K. Lam (U1 Tech.)"
Date:
Subject: select query that would join two databases