SQL Заявление ПРИСОЕДИНЯЙТЕСЬ для студентов и класса - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь создать страницу, на которой ученики могут просматривать домашние задания, заданные учителем для своих занятий. С запросом, который у меня есть сейчас, он не выдаёт мне ошибок, но не возвращает правильные классы. Вместо этого он показывает последние добавленные. Вот мое SQL утверждение.

Что мне нужно, так это утверждение, которое выбирает из каждого класса, с которым связан учащийся, с которым выполнен вход.

$id= $_SESSION['id'];

 mysqli_query($conn, "SELECT * FROM class INNER JOIN student_class ON class.class_id=student_class.class_ID INNER JOIN student ON student.ID= student_class.class_ID WHERE tbluser_ID='$id' "); 

Вот как я хочу информация для отображения

        <table width='80%' border=0>
        <tr bgcolor='#CCCCCC'>
            <td>ID</td>
            <td>Class Name</td>
            <td>Manage </td>
        </tr>
        <?php 
        //while($res = mysql_fetch_array($result)) 
        while($res = mysqli_fetch_array($result)) {         
            echo "<tr>";
            echo "<td>".$res['class_id']."</td>";
            echo "<td>".$res['classname']."</td>";

А вот моя база данных database

1 Ответ

0 голосов
/ 06 января 2020

Условие соединения, которое приводит к таблице student, кажется неправильным.

Я думаю, что это:

ON student.ID = student_class.class_ID 

Должно быть:

ON student.ID = student_class.student_ID 

Новый запрос:

SELECT * 
FROM class c 
INNER JOIN student_class sc ON sc.class_id = c.class_id
INNER JOIN student s ON s.id = sc.student_id
WHERE s.tbluser_ID = :id

Примечание:

  • Вы делаете хотите использовать подготовленные операторы вместо объединения переменных в строку запроса; Вы можете взглянуть на этот пост , для чего и почему

  • псевдонимы таблиц обычно облегчают чтение и обслуживание запросов

  • как правило, вы хотите избежать SELECT *; лучше перечислить (и псевдоним, если необходимо) столбцы, которые вы хотите, чтобы ваш запрос возвращал

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