Запросить вывод большего количества записей, чем следует - PullRequest
0 голосов
/ 17 октября 2011

У меня SQL-запрос с большим количеством соединений.Дело в том, что перед тем, как запрос должен был соединить таблицу StudentClass и таблицу Class, он вывел правильное количество строк, которое должно составлять 4 строки.Но когда я включаю таблицы Class и StudentClass, он выдает 6 строк, тогда как он должен вывести 4 строки.Проблема в том, что если ученик берет 2 модуля и посещает 2 класса, он выводит 4 модуля, в которых дублируются 2 модуля и 4 класса с дублированием 2 классов.Почему это происходит, что-то не так с тем, как я настраиваю таблицы, или это запрос?

Ниже приведен код PHP:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

  <head>
    <title>Exam Grade Report</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>

  <body>

    <?php
      if (isset($_POST['submit'])) {

        $query = "
          SELECT * FROM Course c
            INNER JOIN CourseModule cm ON c.CourseId = cm.CourseId
            JOIN Module m ON cm.ModuleId = m.ModuleId 
            JOIN Session s ON m.ModuleId = s.ModuleId
            JOIN Grade_Report gr ON s.SessionId = gr.SessionId
            JOIN Student st ON gr.StudentId = st.StudentId
            JOIN StudentClass sc ON st.StudentId = sc.StudentId
            JOIN Class cl ON sc.ClassId = cl.ClassId 
          WHERE
            ('".mysql_real_escape_string($sessionid)."' = '' OR gr.SessionId = '".mysql_real_escape_string($sessionid)."')
          AND
            ('".mysql_real_escape_string($courseid)."' = '' OR cl.CourseId = '".mysql_real_escape_string($courseid)."')
          AND
            ('".mysql_real_escape_string($moduleid)."' = '' OR cl.ModuleId = '".mysql_real_escape_string($moduleid)."')
          AND
            ('".mysql_real_escape_string($classid)."' = '' OR sc.ClassId = '".mysql_real_escape_string($classid)."')
          AND
            ('".mysql_real_escape_string($teacherid)."' = '' OR s.TeacherId = '".mysql_real_escape_string($teacherid)."')
          AND
            ('".mysql_real_escape_string($studentid)."' = '' OR gr.StudentId = '".mysql_real_escape_string($studentid)."')
          AND
            ('".mysql_real_escape_string($grade)."' = '' OR gr.Grade = '".mysql_real_escape_string($grade)."')
          ORDER BY $orderfield ASC";

        $num = mysql_num_rows($result = mysql_query($query));
        mysql_close();

    ?>

  </body>
</html>

Я хочу показать запросрезультат и таблицы, которые я попал на слово документ.Как я могу прикрепить текстовый файл между прочим, чтобы вы могли открыть текстовый документ, если хотите?

Спасибо

1 Ответ

1 голос
/ 17 октября 2011

Вы пытались изменить все соединения на левые?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...