我有一个包含3个表的mysql数据库,一个表称为fixturechannels,一个称为footballfixtures,一个称为satellite。
卫星表基本上包含有关卫星频道(名称,国家,频道ID),footballfixtures包含(matchid,hometeam,awayteam,competition ....)的信息,而fixturechannels是一个包含(matchid和channelid,这些是分别通过卫星和足球装置表的外围钥匙链接。
以下是表格的进一步细节:
我在下面使用了以下查询,并且它有效,我能够从表中回显我需要的细节
"SELECT * FROM fixturechannels INNER JOIN footballfixtures ON fixturechannels.matchid=footballfixtures.matchid INNER JOIN satellite ON fixturechannels.channelid=satellite.channelid";
用于回显细节的代码是:
<tbody><tr>
<th>Match ID</th>
<th>Home Team</th>
<th>Away Team</th>
<th>Competition</th>
<th>Date</th>
<th>Time</th>
<th>Channel ID</th>
<th>Channel Name</th>
</tr>
<?php foreach ($results as $res) { ?>
<tr>
<td><?php echo $res["matchid"]; ?></td>
<td><?php echo $res["hometeam"]; ?></td>
<td><?php echo $res["awayteam"]; ?></td>
<td><?php echo $res["competition"]; ?></td>
<td><?php echo $res["date"]; ?></td>
<td><?php echo $res["time"]; ?></td>
<td><?php echo $res["channelid"]; ?></td>
<td><?php echo $res["name"]; ?></td>
</tr>
我的问题是比赛详情会显示两次 因为列出的两个频道显示相同的匹配(见图)
我想要的输出是让每个匹配的详细信息显示一次,显示匹配的多个频道的名称将显示在频道名称列中(没有多行)
我尝试使用GROUP_CONCAT,但没有成功,我尝试了GROUP_CONCAT,因为我知道不建议在MYSQL中每个字段有多个值。
非常感谢能够提供帮助或指导的任何人。
答案 0 :(得分:0)
在HOME TEAM,AWAY TEAM和比赛中添加group_by以及频道的GROUP_CONCAT应该有效!