2016-09-18 32 views
0

私は参加しようとしている2つのテーブルを持っています。最初のテーブルには、さまざまなトーナメント(各トーナメントごとに新しいテーブル、すべて同じ構造)でゴルファーやスコアに関する情報が格納されます。MySQL複数テーブルのデータ選択

表1(MField):

+---------------+------+------+----+------+------+ 
| MGolf   | Rd1P | Rd2P | CP | Rd3P | Rd4P | 
| Jason Day  | 0 | -1 | 5 | 2 | -1 | 
| Jordan Spieth | 6 | -2 | 5 | -1 | -1 | 
| Rory McIlroy | 2 | 1 | 5 | -5 | 3 | 
+---------------+------+------+----+------+------+ 

表2(名簿):2番目の表は、ユーザーと、彼らはそれぞれのトーナメントのために選んだ5人のゴルファーがいっぱいです

+-------+---------------+ 
| User | GName   | 
| User1 | Jason Day  | 
| User1 | Jordan Spieth | 
| User1 | Rory McIlroy | 
+-------+---------------+ 

マイ理想的な出力は次のようになります。

+---------------+------+------+----+------+------+ 
| User1   | Rd1P | Rd2P | CP | Rd3P | Rd4P | 
| Jason Day  | 0 | -1 | 5 | 2 | -1 | 
| Jordan Spieth | 6 | -2 | 5 | -1 | -1 | 
| Rory McIlroy | 2 | 1 | 5 | -5 | 3 | 
+---------------+------+------+----+------+------+ 

私は何を見ていることは次のとおりです。

+---------------+-----+-----+-----+-----+-----+ 
| User1   | Rd1 | Rd2 | Cut | Rd3 | Rd4 | 
| Jason Day  | 0 | -1 | 5 | 2 | -1 | 
| User1   | Rd1 | Rd2 | Cut | Rd3 | Rd4 | 
| Jordan Spieth | 6 | -2 | 5 | -1 | -1 | 
| User1   | Rd1 | Rd2 | Cut | Rd3 | Rd4 | 
| Rory McIlroy | 2 | 1 | 5 | -5 | 3 | 
+---------------+-----+-----+-----+-----+-----+ 

私は次のクエリを使用しています:

$sql = " 
SELECT 
    User, 
    GName, 
    MGolf, 
    Rd1P, 
    Rd2P, 
    CP, 
    Rd3P, 
    Rd4P 
FROM 
    Rosters, 
    MField 
WHERE 
    roster.GName = MGolf 
"; 

$result = $link->query($sql); 

echo '<table>'; 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo '<tr><td>' . $row['User'] . '</td><td>Rd1</td><td>Rd2</td><td>Cut</td><td>Rd3</td><td>Rd4</td></tr>'; 
     echo '<tr><td>' . $row['GName'] . '</td><td>'.$row['Rd1P'].'</td><td>'.$row['Rd2P'].'</td><td>'.$row['CP'].'</td><td>'.$row['Rd3P'].'</td><td>'.$row['Rd4P'].'</td></tr>'; 
    } 
} else { 
    echo "0 results"; 
} 
echo '</table>'; 

私がいる問題は、私ということです'User' Nameは一度しか表示されませんが、現在はテーブル内のすべての行が交互に表示されています。私はそれがどのようにクエリが構造化されているのか知っていますが、私は 'MField'テーブルのゴルファー情報の下の行に5人のゴルファーと、 'User'を一度表示する方法を理解できません。この情報を組み合わせるためのクリーンな方法はありますか?

+0

「ユーザー」列がゴルファーごとに異なる場合はどうなりますか? – Barmar

答えて

0

ループでは、ヘッダー行を1回だけ印刷します。変数を使用してこれを追跡します。

if ($result->num_rows > 0) { 
    $header_printed = false; 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     if (!$header_printed) { 
      echo '<tr><td>' . $row['User'] . '</td><td>Rd1</td><td>Rd2</td><td>Cut</td><td>Rd3</td><td>Rd4</td></tr>'; 
      $header_printed = true; 
     } 
     echo '<tr><td>' . $row['GName'] . '</td><td>'.$row['Rd1P'].'</td><td>'.$row['Rd2P'].'</td><td>'.$row['CP'].'</td><td>'.$row['Rd3P'].'</td><td>'.$row['Rd4P'].'</td></tr>'; 
    } 
} else { 
    echo "0 results" 
} 
+0

非常に近いので、User1の最初のヘッダーが表示されますが、後続のユーザーを取得できません。 – Trex

+0

http://stackoverflow.com/questions/27575562/how-can-i-list-has-same-id-data-with-while-loop-in-php/27575685#27575685 – Barmar

+0

質問には何もありませんその後のユーザーすべてのプレイヤーは同じ 'User1'を持っています。私はあなたが何をしたいのかと尋ねました。ユーザーが違うなら、あなたは答えませんでした。 – Barmar

関連する問題