OK, I managed to work it out eventually. Here is my solution:
QUERY & RESULT:
$q = "SELECT l.lib_id, l.lib_name, l.lib_address, l.lib_open, s.s_id, s.s_name, b.bk_id, b.bk_name
FROM library l, shelf s, book b
WHERE l.lib_id = s.lib_id
AND b.bk_shelf = s.s_id
ORDER BY lib_id, s_name, bk_name";
$result = mysql_query($q) or die(mysql_error());
ARRAY LOOP (to put the query results into an array):
while($row = mysql_fetch_assoc($result)){
$library_array[$row['lib_id']]["library_id"] = $row['lib_id'];
$library_array[$row['lib_id']]["library_name"] = $row['lib_name'];
$library_array[$row['lib_id']]["library_address"] = $row['lib_address'];
$library_array[$row['lib_id']]["library_open_hours"] = $row['lib_open'];
//This is the book array which contains the BOOK ID and the BOOK NAME
$library_array[$row['lib_id']]["book_id"][$row['bk_id']] = $row['bk_name'];
}
OUTPUT LOOP (to output the array into HTML form):
foreach($library_array as $library_id => $library_details) {
echo "<h3>".$library_details['library_name']."</h3>\n";
echo "<p>Books: ";
echo implode(", ",$library_details["book_id"]);
echo "</p>\n";
echo "<p>Address: " . $library_details['library_address'] . "</p>\n";
echo "<p>Opening Hours: " . $library_details['library_open_hours'].</p>\n";
}
This produces the following display of results:
Green Library
Books: Book 1, Book 7, Book 13, Book19, Book 2, Book 8, Book 14, Book 20
Address: 123 Green Street, Greensville
Opening Hours: 9am - 5pm
Please critique my code if you think it can be improved.