Try something like
CREATE TABLE album( ida int primary key , title varchar(n) not null ) ;
CREATE TABLE songs( ids intprimary key, song varchar(m) not null ) ;
CREATE TABLE albumsongs(
        ida int not null,
        ids int not null,
        primary key(ida,ids),
        foreign key(ida) references album(ida),
        foreign key(ids) references songs(ids));

Querying for albums which have a songs is something like:
SELECT title,song FROM album INNER JOIN albumsongs ON ...
INNER JOIN songs ON ... WHERE song='your song name';


> -----Original Message-----
> From: Beauford.2003 [mailto:[EMAIL PROTECTED]] 
> Sent: Sunday, December 01, 2002 9:59 PM
> To: [EMAIL PROTECTED]
> Subject: Table setup question
> 
> 
> Hi,
> 
> I have a database of albums by a group and I want to be able 
> to search on this table to find out what songs are duplicated 
> on what albums (there are
> 36+ albums). The problem is how do I set up the database.
> 
> Example:
> 
> Album1 has 3 songs.  1.song, 2.song, 3.song, 4.song
> Album2 has 4 songs.  4.song, 5.song, 6.song, 3.song
> Album3 has 4 songs.  7.song, 8.song, 1.song, 3.song
> 
> So 3.song appears on all 3 albums.
> 
> Currently I have it set up with two tables as shown below, 
> but I am thinking there has to be a better way to do this 
> than to duplicate the name of the song three, four, or five 
> times in the table.
> 
> Table AlbumName
> 
> Album    ID
> ====    ==
> Album1   1
> Album2   2
> Album3   3
> 
> Table SongTitle
> 
> Song        ID
> ===         ==
> 3.song      1
> 3.song      2
> 3.song      3
> 7.song      3
> etc.
> etc.
> 
> So basically my search is  - SELECT Album, Song FROM 
> AlbumName, SongTitle WHERE AlbumName.ID=SongTitle.ID;
> 
> Given the setup above, is there a way that I can put in the 
> SongTitle.ID field that song appears on more than one album. 
> Maybe something like:
> 
> Song        ID
> ===         ==
> 3.song      1, 2, 3
> 
> But then what would my search be.
> 
> Sorry for the length of this, but I am learning MySQL and 
> trying to get a handle on all of it. My way works, but I'm 
> sure there has to be a better way.
> 
> Any thoughts are appreciated.
> 
> TIA, Beauford
> 
> 
> 
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
> 
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail 
> <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> 
> 
> 
> 


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to