Я пытаюсь выполнить SQL-разделение с использованием Oracle, так что все User_ID
, которые учат классы SAME как определенный ID, должны быть возвращены.SQL-запрос для выполнения деления
Таблица структуры обеих таблиц, я работаю с:
HUMAN(id, first, last)
INSTRUCTOR(human_id, location) -- PK(id, location)
CLASS(instructor_id, class_code, class_num) -- PK(instructor_id, class_code, class_num)
Query Я сейчас работаю с:
SELECT DISTINCT instructor_id, class_code, class_num
FROM CLASS
WHERE NOT EXISTS (
(SELECT instructor_id, class_code, class_num FROM CLASS)
MINUS
(SELECT instructor_id, class_code, class_num
FROM CLASS
WHERE instructor_id =
(SELECT HUMAN.id
FROM HUMAN
WHERE first = 'Foo'
AND last = 'Bar')))
Примеры данных
HUMAN
id first last
1 foo bar
2 John Doe
INSTRUCTOR
human_id location
1 US
2 CA
CLASS
instructor_id class_code class_num
1 CS 999
1 MA 111
1 DE 222
2 CS 999
2 MA 111
2 DE 222
3 CS 999
4 CS 999
запрос должен return instructor_id 2
, так как он является единственным, который инструктирует те же классы, что и instructor_id 1
Запрос, который у меня есть, не содержит строки, несмотря на то, что данные вставляются в соответствии с этим сценарием.
Что «тот же класс» означает один и тот же код класса или тот же класс num или оба? В вашем примере существует взаимно-однозначное соотношение между двумя столбцами, но, предположительно, в ваших реальных данных это не так (возможно, class_num отражает как class_code, так и семестр? или место нахождения? - в противном случае почему бы и то?) – mathguy
То же самое классное, как class_code, так и class_num – hello