0

内部結合を使用して異なるテーブルから値を取得できません。出力は常に何も取得しません。また、エラー メッセージは表示されず、コードの何が問題なのか特定できません。誰か助けてください。よろしくお願いします。これが私のコードの一部です..

<?php
    $con=mysql_connect("localhost","root","");
    mysql_select_db("student_records",$con);
    if(isset($_COOKIE['username']))
    {
        if($_COOKIE['username']!='admin')
        {
            $tbl6=mysql_query("SELECT A.LName, A.FName, A.MName, B.YearLevel
            FROM student as A INNER JOIN stud_course as B ON A.StudNo=B.StudNo INNER JOIN course as C ON B.CourseCode=C.CourseCode INNER JOIN religion as D ON A.ReligionID=D.ReligionID
            WHERE A.StudNo = '".mysql_real_escape_string($_COOKIE['username'])."' ");
            while($row=mysql_fetch_array($tbl6))
            {
                echo "<td>".$row['LName']."</td><td>".$row['FName']."</td><td>".$row['MName']."</td><td>".$row['Course']."</td><td>".$row['YearLevel']."</td><td>".$row['EAdd']."</td><td>".$row['ReligionName']."</td></tr>";

            }
        }
    }
    ?>
4

1 に答える 1

2

内部結合では、結合に含まれる両方のテーブルにデータが存在する必要があります。あなたの場合、4 つのテーブルがあり、それらのテーブルのいずれかで関連データが欠落している可能性があります。

SELECT A.LName, A.FName, A.MName, B.YearLevel, C.Course
FROM student as A 
INNER JOIN stud_course as B ON 
    A.StudNo=B.StudNo 
INNER JOIN course as C ON 
    B.CourseCode=C.CourseCode 
INNER JOIN religion as D ON A.ReligionID=D.ReligionID
WHERE A.StudNo = '".mysql_real_escape_string($_COOKIE['username'])."' "
  • ユーザー名 Cookie と等しいレコードがstudentテーブルにない場合、データは取得されません。StudNo
  • stud_course学生がテーブルにレコードを持っていない場合、データは取得されません。
  • テーブルに in が存在しない場合、データは取得さCourseCodestud_courseません。course
  • 生徒のReligionIDが null であるか、religion表にない宗教を持っている場合、データは取得されません。

INNER JOINSQL を小さな断片に分割して (またはそれぞれを に切り替えてLEFT OUTER JOIN)、デバッグして問題の場所を発見することをお勧めします。

使用しようとする場合は、選択リストにCourseand (どのテーブルからのものかわからない) フィールドを必ず追加する必要があることに注意してください。Eadd

于 2013-03-12T01:43:15.393 に答える