2016-12-01 3 views
0

Схема:Как применять автообъединение

Student (SNUM: целое число, SNAME: символ (30), специальность: обугленные (25), уровень: символ (2), возраст: целое число)

факультета (fid: integer, fname: char (30), deptid: integer)

Класс (cname: char (40), meets_at: char (20), комната: char (10), fid: integer | fid REFS Faculty.fid)

Записано (snum: integer, cname: char (40) | snum REFS student.snum, cname REFS class.name)

Я хочу напечатать уровень и возраст студентов для всех уровней кроме 'JR'. Я знаю, что могу применить этот запрос простым способом. Но я хочу, чтобы нас е JOINS

Моей попытки:

select s.levels as Seniority,s.age as Age 

from student s 

where s.levels not in (

select a.levels 

from student a 

where a.levels='JR'); 

Это не дает мне ожидаемый ответ. Неужели я ошибаюсь?

+0

Вы не хотите 'join'? !! – wajeeh

+0

Я хочу сделать это JOINS –

+0

как этот 'Выберите s.level, s.age от студента s, где s.level! = 'JR'' ?? – wajeeh

ответ

0

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

SELECT level as Seniority, age as Age from student WHERE levels != 'JR' 

Он должен дать вам желаемый результат.

+0

"," представляет собой альтернативное правописание для "кросс-соединения", которое связывается менее жестко, чем все операторы объединения. – philipxy

0

В то время как я согласен, join может быть излишним, это выглядит как домашнее задание, и в этом случае вам, возможно, было предложено специально использовать join. Вот моя попытка:

select distinct levels as Seniority, age as Age 
    from student 
     natural join 
     (select * 
      from student a 
      where a.levels != 'JR'); 
Смежные вопросы