I have joined multiple tables with INNER JOIN and got the output which resembles this:
SPORT COUNTRY LEAGUE MATCH
SPORT COUNTRY LEAGUE MATCH
SPORT COUNTRY LEAGUE MATCH
I’d like SPORT to be displayed only the first time it’s found in the query. Same with COUNTRY and LEAGUE, so they serve as a header for the matches. Like this:
SPORT
COUNTRY
LEAGUE1
MATCH
MATCH
MATCH
LEAGUE2
MATCH
MATCH
MATCH
The code:
if ($db_found) {
$SQL ="
select sportname,
tournament_templatename,
tournament_stagename,
GROUP_CONCAT(eventname) as event_name
from ('SELECT
event.id AS eventid,
event.name AS eventname,
event.tournament_stageFK AS eventtournamentstageFK,
event.startdate AS eventstartdate,
tournament_stage.id AS tournament_stageid,
tournament_stage.name AS tournament_stagename,
tournament_stage.tournamentFK AS tournament_stagetournamentFK,
tournament.id AS tournamentid,
tournament.name AS tournamentname,
tournament.tournament_templateFK AS tournamenttournament_templateFK,
tournament_template.id AS tournamenttemplateid,
tournament_template.name AS tournament_templatename,
tournament_template.sportFK AS tournament_templatesportFK,
sport.id AS sportid,
sport.name AS sportname
FROM event
INNER JOIN tournament_stage
ON event.tournament_stageFK=tournament_stage.id
INNER JOIN tournament
ON tournament_stage.tournamentFK=tournament.id
INNER JOIN tournament_template
ON tournament.tournament_templateFK=tournament_template.id
INNER JOIN sport
ON tournament_template.sportFK=sport.id
WHERE
DATE(event.startdate) = CURRENT_DATE()
ORDER BY
sport.id ASC, tournament_template.name ASC, event.startdate ASC'
)
GROUP BY
sportname, tournament_templatename, tournament_stagename
ORDER BY
sportname, tournament_templatename, tournament_stagename";
$result = mysql_query($SQL);
echo "<table border='1' style='border-collapse: collapse;border-color: white;
font-size:8px; background-color: #c8ccce; width:100%;'>";
while($db_field=mysql_fetch_assoc($result)){
echo "<tr>" , "<td>" , $db_field['sportname'] , "</td> " , "<td>" ,
$db_field['tournament_templatename'] , "</td>" , "<td>" ,
$db_field['tournament_stagename'] , "</td>" , "<td>" , $db_field['eventstartdate'] ,
"</td>" , "<td>" , $db_field['eventname'] , "</td>" , "</tr>";
}
echo "</table>";
mysql_close($db_handle);
}
Thanks for helping out a PHP newbie.
Over your query you can:
and then fetch the results, with first 3 columns already unique.
php code remains the same: