I have 3 tables, Category, Subcategory and Stores

What I want to do is list like this

Heading --->Category
Subheading --->Subcategory
Store ----->Store Name

Subheading--->Subcategory
Store------>Store Name

Basically it lists the main selected category with the relevant subcategories and stores assocaited with them within a loop. Now I've got this working using a LEFT Join within my query. The columns counter allows the stores to be displayed in 4 columns. However, each subcategory has one store in it. I want to be able to have stores appear in multiple subcategories. What is the best way of doing this? I was thinking of a lookup table (subcategories_to_stores) but how do I set it up to work with the query? Or is there another better way of doing this?

Code:

$result = mysql_query("SELECT s.subcatName, s.store_name, s.thumb_nail FROM subcategory s LEFT JOIN store s s.msubcid = s.subcid WHERE cid='$categorytarget' AND active='1' ORDER BY s.subcatName ASC") or die("SELECT error: " . mysql_error());

$columns_counter=4;

echo '<tr>';

$currentCat = '';
while($row = mysql_fetch_array($result)) {
$subcatName = $row['subcatName'];
$merchant_name = $row['store_name'];
$thumb_nail = $row['thumb_nail'];

extract($row);
if ($currentCat != $subcatName) {
//if a new category, write category head
echo "<tr><td class='titlebar_sml' colspan=\"4\">$subcatName</td></tr>";
$currentCat = $subcatName;
}

if(isset($store_name)) {
echo '<td align = "center" width="25%">';
echo '<A HREF="'.$store_name.'"><img src='.$thumb_nail.' /></A><br />' . '<H4><A HREF="'.$store_name).'">'.$store_name.'</A></H4>';

echo '</td>';

}else{
echo '<tr><td align ="center" colspan=\"4\">Sorry but this category is empty.</td></tr>';

}
$columns_counter--;
if(!$columns_counter)
{
echo '</tr><tr>';
$columns_counter=4;
}
}

echo '</tr></table>';