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

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to