Barry,
You're 3/4 of the way there.
You understand how data is normalized, and you have the proper keys so that
you can link your tables in a multi-table join. For specific syntax you
should check the MySQL manual, but what you want is roughly this ..and I'll
make up some field names. (Because I'm too lazy to check back to the msg
which contained the table structure.)
select
table1.artist as artist,
table3.image as image,
table2.song as song
from
table1, table2, table3
where
table3.art_id = table2.art_id and
table2.art_id = table1.art_id and
table1.art_id = $whch_artist?
If there are 20 songs this will return 20 rows. In your PHP code you will
have to weed out the duplicate fields as you loop though the returned
record set.
Alternately, you could break this into two queries - one to return the
artist name and image, the other to fetch the songs.
The third alternative would be to GROUP the results. I've not tested this,
but if it can be properly processed by mysql_fetch_array(), then we're
doing the work in SQL, not PHP. Add this line after the where:
group by
group by artist, image, song
Again, if you can test this at the mysql console it will be faster than
making changes to a script and re-running it. You may not need to group on
image. A very brief test script to see how mysql_fetch_array() handles a
grouped record set is a good idea. Might be worthwhile to check Google for
"mysql_fetch_array group"
Regards - Miles
PS Where is "cx"? /mt
At 12:38 AM 1/14/2002 +1300, Barry Rumsey wrote:
>This is properly a simple question but I can't figure it out.
>Lets say I've got there tables: table1(art_id,artist),
>table2(song_id,art_id,song), table3(image_id,art_id,image).
>What I'm trying to do is get 1 image displayed with the songs on that
>album displayed next to it. All I can get is 1image,1 song or 1 image per
>song (20 songs = 20 images).
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]