1

SQLクエリを実行していますが、テーブルからデータが返されません。理由はわかりませんが、からに変更しINNERましLEFTたが、運がありません。クエリを数回修正しましたが、問題が見つかりません。何も表示されない理由について何か考えはありますか?

テーブル構造

テーブル作成クエリ

PHP

$query = ("SELECT  class.class_name, class.class_caption, class.class_credit_hours, class.class_description, faculty_fname, faculty_lname
            FROM class
            LEFT JOIN section 
            ON class.id = section.class_id
            LEFT JOIN faculty 
            ON faculty.id = section.faculty_id OR faculty.id = office_hours.faculty_id
            LEFT JOIN faculty_titles
            ON faculty_titles.faculty_id = faculty.id
            LEFT JOIN faculty_education
            ON faculty_education.faculty_id = faculty.id 
            LEFT JOIN major_class_br
            ON major_class_br.class_id = class.id
            LEFT JOIN major_minor 
            ON major_class_br.major_minor_id = major_minor.id
            LEFT JOIN sched_sect_br 
            ON sched_sect_br.section_id =  section.id
            LEFT JOIN schedule
            ON schedule.id = sched_sect_br.schedule_id
            LEFT JOIN semester
            ON semester.id = schedule.semester_id
            LEFT JOIN office_hours
            ON schedule.id = office_hours.schedule_id AND faculty.id = office_hours.faculty_id       
                 ");
      //execute query
      $result = mysql_query($query);

     if ($result){

    $totalhours = 0;

    while ($row = mysql_fetch_assoc( $result ))
    {  
        print "<b>" . $row['class_name'] . "</b><br>";
        print $row['class_caption'] . "<br>";
        print $row ['class_credit_hours'] . "hrs. <br>";
            print $row ['faculty_lname'] . "hrs. <br>";
            print $row ['faculty_fname'] . "hrs. <br>";
        print $row['class_description'] . "<br>";      
        print "------------------------------<br />";
        $totalhours += $row['class_credit_hours']; 
    }   
    }

    print "<p>Total hours for Major: " . $totalhours . ".</p>";

希望する表示:

Computer Programming I
CP1000
4
James Doe
This course offers introduction to programming. 

更新:問題はここで見つかりましたが、理由はわかりません

ON faculty.id = section.faculty_id OR faculty.id = office_hours.faculty_id
4

1 に答える 1

2
  • SQLをコピーし、MySQL管理者に移動し、そこでSQLを実行して、結果が返されるかどうかを確認します。

  • すべてのJOINを削除して再度実行すると、少なくとも何かが表示されるはずです。

  • JOINを1つずつ追加します

  • 行が返されない結果となったJOINを特定してみてください

  • その結合の左側と右側をチェックして、結合する有効なデータが実際にあることを確認します

または、OUTERJOINを使用します

于 2012-11-09T03:55:52.563 に答える