0

SQLからのデータの表示に関していくつかの問題に直面しています。私は自分のデータを2つのテーブルに保存します.テーブル学生とテーブル会社です。

テーブル学生{id、名前、company_code、fac_staff_id}

テーブル会社 {id, company_name, company_state}

以下のようなテーブルを作成しようとしています。

  • 状態 A

    • A社

      • 学生 1
      • 学生 2
    • B社

      • 学生 3
      • 学生 4
  • 状態 B

    • C社

      • 学生 5
    • D社

      • 学生 6
      • 学生 7
      • 学生 8

上記の構造と同様のテーブルを作成しようとしましたが、company_state に基づいてすべての学生を分類したいだけです。出力には 1 つの状態のみが表示され、すべての生徒がその状態になります。

          $querysel = "SELECT DISTINCT c.company_state,s.fac_staff_id FROM tblcompany 
           c, tblstudent s WHERE c.id = s.company_code " ;
          $resultsel = mysql_query($querysel, $connection);
          $querystdsel = "SELECT s.name,c.company_state  FROM tblcompany c,
           tblstudent s WHERE c.id = s.company_code " ;
          $resultstdsel = mysql_query($querystdsel, $connection);

    while($rowsel =mysql_fetch_array($resultsel)){

    if ($rowsel['fac_staff_id'] == NULL){

    echo $rowsel['company_state'];

    while($rowstdsel =mysql_fetch_array($resultstdsel)){

    if($rowstdsel['company_state']=$rowsel['company_state']){

      echo $rowstdsel['name']; 

    }

    }

    }
      }       

私はまだphpとmysqlが苦手なので、誰かが上記のようなテーブルを作成する方法または別の方法を教えてくれることを願っています。ありがとうございました

4

1 に答える 1

0

ステートメントを結合して、結果が 1 つだけになるようにする必要があります。すべての行は、「company_state、company_name による順序」で次のようになります。

state | company | student
A  | A  | student1
A  | A | student2
A  | B | student3
....

次に、php でリストを使用して構造を取得します。このようなもの:書き留めただけで、きれいで機能的なコードはありません!

<?php

$rows = mysqli_fetch_array($result);

echo "<ul>";

$lastcompany = "";
$laststate = "";

foreach($rows as $row)
{
  if(($laststate == "") or ($laststate != $row['state']))
  {
    // New Item on mainlist: states

    if($laststate != $row['state'])
    { // close previous lists (students, companies)
      echo "</ul></ul></li>";
    }

    echo "<li>".$row['state'];    
  }


  if(($lastcompany == "") or ($lastcompany != $row['company']))
  {
    // New Item on mainlist: companies

    if($lastcompany != $row['company'])
    { // close previous (students) list
      echo "</ul></li>";
    }

    echo "<li>".$row['company'];    
  }

  // New student entry
   echo "<li>".$row['company']."</li>";


  // Redmine company and state for next iteration
  $lastcompany = $row['company'];
  $laststate = $row['state'];
}


// After all close all lists
echo "</ul></ul></ul>";

?>
于 2013-05-18T09:11:13.673 に答える