2016-07-12 28 views
0

私は3つのテーブルを持つmysqlデータベースを持っていますが、fixturechannelsというテーブルと、satelliteという名前のテーブルがあります。MySQL - 1つのフィールドに複数の行を表示する(内部結合のあるテーブル)q

サテライトテーブルには、サテライトチャンネル(名前、国、チャンネルID)、サッカーフィクスチャー(matchid、hometeam、awayteam、competition ....)の情報が含まれています。fixturechannelsはmatchidとchannelidを含むテーブルです。それぞれサテライトとサッカーフィクスチャーテーブルからのキーでリンクされています)。以下は

テーブルの詳細、次のとおりです。

tablelayouts

は、私は次のクエリ以下で使用し、それが働いていた、私は私がテーブルから必要な内容をエコーすることができました

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

私の問題は、試合の詳細が二回 同じ一致を示すとしてリストされている2つのチャネルがあるとして(画像を参照)

incorrectoutput

私の所望の出力がために、各試合の詳細を持っていることですが表示されていることですチャンネル名の列に表示される一致を示す複数のチャンネルの名前(複数行なし)

私はGROUP_CONCATを使用しようとしましたが、成功しませんでした。私は知っているのでGROUP_CONCATを試しましたMYSQLのフィールドごとに複数の値を持つことはお勧めしません。

多くの場合、支援や指導を提供できる方に感謝します。

+0

あなたのquestioにテーブルをテキストとして投稿してください – e4c5

+0

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

答えて

0

GROUP_CONCATチャンネルと一緒にHOME TEAM、AWAY TEAM、コンペティションにgroup_byを追加すると効果があります。

+0

このコードを試してみましたが、予期しない 'GROUP'(T_STRING )i "はfixturechannels.matchid = footballfixtures.matchid ON footballfixtures をJOIN INNERはfixturechannels.channelid = satellite.channelid ON衛星をJOIN fixturechannels INNER * FROM \t GROUP_CONCAT(channelid) 選択" hometeam、awayteam BY GROUP 'コードを試し、 コンペ; '私はこのgroup_concatを間違ってやってしまったと思います。 –

+0

U'を削除する必要があります "* GROUP_CONCAT(channelid)からfixturechannelsを選択してくださいINNER JOIN football fixtures ON fixturechannels.matchid = footballfixtures.matchid INNER JOIN衛星ON fixturechannels.channelid = satellite.channelid" GROUP BY hometeam、awayteam、競争; –

+0

ありがとうございます、私はエラーはありませんが、データはサイト上にもう表示されません、クエリ内のエラーであってはいけませんが、情報を正しく取得してはいけません。 –

関連する問題