Выберите только те записи, которые соответствуют всем заданным условиям в справочной таблице с Hibernate и Oracle - PullRequest
0 голосов
/ 29 мая 2018

У меня есть таблицы Student (std_id, std_name), Subject (sub_id, sub_name) и одна таблица сопоставления Sudent_Subject (std_id, sub_id)

Хочу получить список всех студентов, у которых только данный предмет говорит математикаи наука, а не иная, чем эта тема или не меньше, чем данная тема.

В этом случае я настроил таблицы выше в режиме гибернации.Здесь требуются POJO

    Class Student {
        private String std_id;
        private String std_name;
        List<Subject> lstSubject;
    }

    Class Subject {
        private String sub_id;
        private String sub_name;
        List<Student> lstStudent;
    }

Можно ли написать HQL, чтобы получить требуемый результат?Кроме того, как мы можем достичь этого результата, используя простой SQL?

1 Ответ

0 голосов
/ 29 мая 2018

Кроме того, как мы можем достичь этого результата, используя простой SQL?

Вы можете использовать HAVING предложение:

SELECT s.std_id, s.name
FROM Student s
JOIN Student_Subject ss
  ON s.std_id = ss.std_id
JOIN Subject sb
  ON sb.sub_id = ss.sub_id
GROUP BY s.std_id, s.name
HAVING COUNT(*) = 2
   AND COUNT(CASE WHEN sb.sub_name IN ('Math', 'Science') THEN 1 END) = 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...