1

行スパンに問題があります。データベースのすべてのデータが1つの行に出力されます。IDが違うのに!出力はコース名とそのコースを受講したすべての学生である必要があります。私のコードをデータベースの最初のコース名のみを取得し、データベース内のすべての学生名とともに出力します。

私のコードは

                      <h2> List of course Name with students names</h2>

<?php


        include('../connect.php');
        $id=$_SESSION['login_user'];


        $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
                FROM course AS c
                INNER JOIN student AS s
                ON s.CourseID = c.CourseID"; 

        $result = mysql_query ($sql, $connection); 


          echo "<center>";

        echo "<table>";
        echo "<tr> <th>Course Name</th> <th> Student Name</th>  </tr>";

        // loop through results of database query, displaying them in the table
        while($row = mysql_fetch_array( $result )) {
                // echo out the contents of each row into a table
               echo "<tr>";

                echo '<td>' . $row['CourseName'] . '</td>';
                echo "<td rowspan='' >" .$row['Studentname'] . "</td>";


                echo "</tr>";


        }
        echo "</table>"; 
         echo "</center>";



?>

私の2つのテーブルは次のとおりです。

コース

CourseName var(30)
CourseID   int(7)

学生

Studentname var(30)
StudentID   int(7) 
CourseID    int(7)  
4

1 に答える 1

0

問題はクエリにあります。GROUP BY集合体データがグループ化される列を指定するために必要な、を使用しませんでした(そのため名前が付けられています)。

    $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
            FROM course AS c
            INNER JOIN student AS s ON s.CourseID = c.CourseID
            GROUP BY C.CourseName "; 

もちろん、誰も受講していないコースをリストする必要がある場合は、次LEFT JOINの代わりに使用する必要がありINNER JOINます。

    $sql = "SELECT C.CourseName ,GROUP_CONCAT(s.Studntname) AS Studntname
            FROM course AS c
            LEFT JOIN student AS s ON s.CourseID = c.CourseID
            GROUP BY C.CourseName "; 

部分に関してはrowspan=''-私はこれを理解していません。意味がありません。また

  • そこに置かないで、プレーンを使用してください<td>
  • セルを複数の行にまたがる必要がある場合は、正しい値を使用してください。<td rowspan="2">
于 2012-11-08T11:01:16.867 に答える