Не знаете, как создать SQL-запрос для следующей задачи - PullRequest
0 голосов
/ 28 октября 2018

Tables

У меня есть вышеупомянутые таблицы в моей базе данных.Сначала я получаю переменную COURSE со своей предыдущей PHP-страницы.Мне нужно распечатать список имен учеников вместе с их студенческими идентификаторами, которые не прошли курсДля приведенных выше таблиц, если полученная переменная равна A, мне нужно напечатать Джейка вместе с его student_id .Поскольку идентификатор ученика 3 Джейка не связан с курсом А .

Я попытался выполнить следующий запрос, который, похоже, не работает, и я не уверен, где я ошибаюсь

SELECT DISTINCT T1.name, T1.student_id 
FROM Table 1 T1, Table 2 T2
WHERE T1.student_id = T2.student_id AND
T2.COURSE != :variable
ORDER BY T1.name ASC, 
         T1.student_id ASC

переменная: A

Ответы [ 3 ]

0 голосов
/ 28 октября 2018

Вы можете использовать NOT EXISTS, чтобы найти список студентов, которые не прошли курс:

SELECT * FROM T1
WHERE NOT EXISTS (
    SELECT * FROM T2
    WHERE T1.StudentId = T2.StudentId
        AND T2.Course = :variable
    )
ORDER BY name ASC, student_id
0 голосов
/ 28 октября 2018

Я ценю, что это должно показаться очень старомодным, но опять же, я тоже ...

SELECT DISTINCT x.*
  FROM t1 x
  LEFT
  JOIN t2 y
    ON y.student_id = x.student_id
   AND y.course = 'a'
 WHERE y.student_id IS NULL;
0 голосов
/ 28 октября 2018

Есть много вариантов.Например, вы можете использовать подзапрос:

SELECT name, student_id FROM t1 WHERE student_id NOT IN (SELECT student_id FROM t2 WHERE course='A')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...