2016-07-12 6 views
0

Ich habe eine MySQL-Datenbank mit 3 Tabellen, eine Tabelle heißt fixtuchannels, eine heißt footballfixtures und eine heißt satellite.MySQL - Zeige mehrere Zeilen in einem Feld (Tabellen mit inneren Joins) q

Grundsätzlich enthält die Satelliten-Tabelle Informationen über Satellitenkanäle (Name, Land, Kanal-ID), Fußball-Mischungen enthält (mideid, Heimteam, Auswärtsteam, Wettbewerb ....) und fixturechannels ist eine Tabelle mit (mideid und channelid, diese sind mit den jeweiligen Schlüsseln aus dem Satelliten- bzw. Fußballtisch verbunden).

Im Folgenden finden Sie weitere Details zu den Tabellen:

tablelayouts

ich die folgende Abfrage unten verwendet, und es funktionierte, konnte ich die Details, die ich aus der Tabelle müssen echo

"SELECT * FROM fixturechannels INNER JOIN footballfixtures ON fixturechannels.matchid=footballfixtures.matchid INNER JOIN satellite ON fixturechannels.channelid=satellite.channelid"; 

Der für die Wiedergabe der Details verwendete Code lautet:

<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> 

Mein Problem ist, dass die Spieldetails angezeigt werden zweimal , da es zwei Kanäle aufgelistet, wie das gleiche Spiel zeigt (siehe Bild)

incorrectoutput

meine gewünschte Ausgabe die Details für jedes Spiel haben zu sein einmal angezeigt, und die Namen mehrerer Kanäle zeigt die Übereinstimmungen in der Kanalnamenspalte (keine mehrere Zeilen)

Ich versuchte mit GROUP_CONCAT, aber hatte keinen Erfolg, versuchte ich GROUP_CONCAT, wie ich es weiß Es wird nicht empfohlen, mehrere Werte pro Feld in MYSQL zu verwenden.

Vielen Dank an jeden, der Hilfe oder Anleitung bieten kann.

+0

bitte Tabellen als Text in Ihrer Questiono – e4c5

+0

http://sqlfiddle.com/#!9/51662/1 –

Antwort

0

Hinzufügen eines group_by auf HOME TEAM, AWAY TEAM und Wettbewerb zusammen mit GROUP_CONCAT von Kanälen sollte funktionieren!

+0

danke für den Vorschlag, habe ich diesen Code versucht, aber habe einen Syntaxfehler, unerwartete 'GROUP' (T_STRING i) versucht, den Code ' "SELECT * \t GROUP_CONCAT (ChannelID) FROM fixturechannels INNER JOIN footballfixtures fixturechannels.matchid ON = footballfixtures.matchid INNER JOIN Satelliten auf fixturechannels.channelid = satellite.channelid" GROUP BY Heimmannschaft, awayteam , Wettbewerb; 'Ich denke, ich habe diese group_concat falsch gemacht. –

+0

U muss '*' entfernen" SELECT GROUP_CONCAT (channelid) FROM fixturechannels INNER JOIN footballfixtures ON fixturechannels.matchid = footballfixtures.matchid INNER JOIN Satellit ON fixturechannels.channelid = satellite.channelid "GROUP BY Heimteam, Auswärtsteam, Wettbewerb; –

+0

danke, ich habe keine Fehler, aber keine der Daten wird mehr auf der Website angezeigt, darf kein Fehler in der Abfrage sein, aber es muss nicht die Informationen korrekt abrufen. –

Verwandte Themen