1

私は常にスタックオーバーフローを使用して私を助けていますが、今は困惑しています-うまくいけば、この問題に関するガイダンスが得られることを願っています:

2 つのテーブルがあり、1 つは NFL Divisions を含み、もう 1 つは NFL Teams を含みます。これらは、division_id フィールド (Divisions テーブルの主キー、Teams テーブルの外部キー) を介して接続されます。

私がやりたいことは、クエリでテーブルを結合し、部門ごとにチームを出力することです。PHP で 2 つの個別のクエリ/ループを使用してこれを達成できますが、代わりに 2 つのテーブルを 1 つのクエリに結合することでこれを達成できるかどうかを知りたいです。

これが私が持っているものです:

$query = "SELECT Divisions.division_id, Divisions.conference, Divisions.name, 
    Teams.name FROM Divisions INNER JOIN Teams ON 
    Teams.division_id = Divisions.division_id ORDER BY Divisions.division_id";

if( $result = $db->query($query) ){
  while( $row = $result->fetch_object() ){
    // here is where I'm stuck
  }
}

最終出力を次のようにしようとしています。

AFC ノース
クリーブランド ブラウンズ
ピッツバーグ スティーラーズ
ボルチモア レイブンズ
シンシナティ ベンガルズ

AFC イースト
バッファロー・ビルズ
マイアミ・ドルフィンズ
etc.

これで私を助けてくれる人に、事前に感謝します! 私は2年以上プログラミングをしていませんでしたが、戻ってきました。

4

3 に答える 3

1

行をループして、division_id変更されるたびに新しいヘッダーを出力します。

$query = "SELECT Divisions.division_id, Divisions.conference, Divisions.name, 
    Teams.name AS teamName FROM Divisions INNER JOIN Teams ON 
    Teams.division_id = Divisions.division_id ORDER BY Divisions.division_id";

if ($result = $db->query($query)) {
    $division = "";
    while ($row = $result->fetch_object()) {
        if ($division != $row["division_id"])
        {
            $division = $row["division_id"];
            echo "<br /><h2>{$row["conference"]}</h2>";
        }

        echo "{$row["teamName"]}<br />";
    }
}
于 2012-05-08T15:09:08.440 に答える
0
$result = array();
if( $result = $db->query($query) ){

  while( $row = $result->fetch_object() ){
    if(empty($result[$row['division_id']])
    {
       $result[$row['division_id']] = $row;
    }
    $result[$row['division_id']]['teams'][] = $row;
  }
}
print_r($result);
于 2012-05-08T15:02:28.127 に答える
0

トラフをループして、同じ部門かどうかを再度確認できます。それが新しい部門の場合は、それを書き、<br />

$query = "SELECT Divisions.division_id, Divisions.conference, Divisions.name, 
    Teams.name as teamName FROM Divisions INNER JOIN Teams ON 
    Teams.division_id = Divisions.division_id ORDER BY Divisions.division_id";

if( $result = $db->query($query) ){
    $lastDivision = -1;
  while( $row = $result->fetch_object() ){
    if($lastDivision != $row["division_id"]){
        //here it is a new division,
        echo "<b>" . $row["division_id"] . "</b><br />";
    }else{
        //not a new division so we just continu to write teams
        echo $row["teamName"] . "<br />";
    }
    $lastDivision = $row["division_id"];
  }
}
于 2012-05-08T15:04:43.523 に答える