I have four tables:
supportactivity
supportactvity_id (PK)
supportactivity
qualityadmin
qualityadmin_id (PK)
quality_name
supportactivityrelations
relation_id (PK)
supportactivity_id
qualityadmin_id
quality_name
supportactivity
supportactivityuser
supportactivityuser_id (PK)
supportactivity_id
username
timentered
In supportactivityrelations you can see that each qualityadmin has one or more supportactivities related to it.
I have created a query that works perfectly
$sql1 = "SELECT supportactivity.supportactivity_id AS supportactivity_id, supportactivity.supportactivity AS supportactivity,
supportactivityuser.username AS username, qualityadmin.quality_name AS quality_name,
qualityadmin.qualityadmin_id AS qualityadmin_id
FROM supportactivity
LEFT JOIN supportactivityrelations ON supportactivity.supportactivity_id = supportactivityrelations.supportactivity_id
LEFT JOIN supportactivityuser ON supportactivity.supportactivity_id = supportactivityuser.supportactivity_id
LEFT JOIN qualityadmin ON supportactivityrelations.quality_name = qualityadmin.quality_name
WHERE supportactivityuser.username = '$username' ORDER BY supportactivity";
this creates the following results:
http://www.mindseyemidlands.co.uk/leftjoin.gif
This is great but the problem is when I echo results it is showing up the quality_name more than once. Below is my code that shows the above query but in the context of it being echoed with a list of the supportactivities relating to each quality_name
<?php
//display list of organisations that does support activities chosen in form
$sql1 = "SELECT supportactivity.supportactivity_id AS supportactivity_id, supportactivity.supportactivity AS supportactivity,
supportactivityuser.username AS username, qualityadmin.quality_name AS quality_name,
qualityadmin.qualityadmin_id AS qualityadmin_id
FROM supportactivity
LEFT JOIN supportactivityrelations ON supportactivity.supportactivity_id = supportactivityrelations.supportactivity_id
LEFT JOIN supportactivityuser ON supportactivity.supportactivity_id = supportactivityuser.supportactivity_id
LEFT JOIN qualityadmin ON supportactivityrelations.quality_name = qualityadmin.quality_name
WHERE supportactivityuser.username = '$username' ORDER BY supportactivity";
$results1 = mysql_query($sql1);
while ($row = mysql_fetch_array ($results1)){
//list of support activities relating to each organisation
$name1 = $row["quality_name"];
echo '
<table cellpadding="0" cellspacing="0" border="0" id="myTable" width="700px">
<tr>
<td colspan="3"><a href="qualitysystem_complete_details.php?quality_name='. urlencode($row[3]) .'">'. $row[3] .'</a></td>
</tr>
<tr>
<td class="heading" colspan="4"><strong>Support activities provided</strong></td>
</tr>';
$sql2 = "SELECT supportactivity.supportactivity_id AS supportactivity_id,
supportactivity.supportactivity AS supportactivity, qualityadmin.quality_name AS quality_name,
qualityadmin.qualityadmin_id AS qualityadmin_id
FROM supportactivity
LEFT JOIN supportactivityrelations ON supportactivity.supportactivity_id = supportactivityrelations.supportactivity_id
LEFT JOIN qualityadmin ON supportactivityrelations.quality_name = qualityadmin.quality_name
WHERE qualityadmin.quality_name = '$name1' ORDER BY supportactivity";
$results2 = mysql_query($sql2);
while ($row = mysql_fetch_array ($results2)){
$supportactivity = $row["supportactivity"];
echo '<tr>
<td colspan="3">' . $row['supportactivity'] . '</td>
</tr>';
}
}
?>
How can I adjust this so that I am showing each quality_name only once?
I understand that this seems silly because as it stands if a quality_name has one or more supportactivities then it will always query & show multiple instances but I cannot see where my database design is flawed as I have had it looked at on this forum before and it was approved.