Задать вопрос
@lum1ere

Как правильно исключить пользователя из запроса?

exame_mark
6293437421ce3694163934.png

students
6293440c0c098263336013.png

По условию мне нужно выводить только тех у кого есть 4, 5. И если у человека есть 2, то его уже не брать.
Пишу такой код:
select e.mark, course, g.name, s.name, lastname, surname, p.name, f.name from students s
left join groupa g on s.group_id = g.id
inner join exam_mark e on s.id = e.student_id
inner join peciality p on g.peciality_id = p.id
inner join facult f on p.facult_id = f.id
where e.mark >= 4 and e.mark <> 2

А мне выводит человека у которого есть 2 и другие положительные оценки.
В чем суть, по данным которые сейчас есть, нужно чтоб выводило только Александру.
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой 3 комментария
Решение пользователя Константин Цветков К ответам на вопрос (4)
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
-- Только значимые столбцы
CREATE TABLE exam_mark (ID INT IDENTITY, student_id INT, mark INT)
INSERT exam_mark (student_id, mark ) 
  VALUES (4, 5), (4, 4), (4, 4), (4, 5), (4, 2),
         (5, 5), (5, 5), (5, 4), (5, 3), (5, 5),
         (6, 2), (6, 2), (6, 3), (6, 2), (6, 2),
         (7, 3), (7, 3), (7, 3), (7, 3), (7, 3)

SELECT gd.* 
  FROM exam_mark AS gd
    LEFT JOIN exam_mark AS bd ON bd.student_id = gd.student_id AND bd.mark = 2
     -- у кого есть 4, 5               но нет 2
  WHERE (gd.mark IN (4, 5)) AND (bd.student_id IS NULL)
Ответ написан
Комментировать