SQL заявление не работает, получая ошибки - PullRequest
0 голосов
/ 23 мая 2018

У меня возникли проблемы с выполнением выписки, я ищу общую сумму кредитов каждого учащегося и идентификационный номер студента.

Я написал:

select student.ID,sum (course.credits)
from (student natural join takes),course 
where takes.course_id=course.course_id
group by student.ID

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

мои таблицы

create table student
(ID             varchar(5),
 name           varchar(20) not null,
 dept_name      varchar(20), 
 tot_cred       numeric(3,0) check (tot_cred >= 0),
 primary key (ID),
 foreign key (dept_name) references department
    on delete set null

create table takes
(ID              varchar(5), 
 course_id           varchar(8),
 sec_id              varchar(8), 
 semester            varchar(6),
 year                numeric(4,0),
 grade                   varchar(2),
 primary key (ID, course_id, sec_id, semester, year),
 foreign key (course_id,sec_id, semester, year) references section
    on delete cascade,
 foreign key (ID) references student
    on delete cascade

Я не уверен, в чем проблема.когда я запускаю это утверждение, оно работает

select name, sum(course.credits)
from (student natural join takes),course 
where ID=1000 and takes.course_id=course.course_id
group by name

, если вы можете указать мне правильное направление, я был бы признателен за это .. спасибо

Ответы [ 2 ]

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

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

select name, sum(c.credits)
  from student s
  inner join takes t
    ON t.ID = s.ID
  inner join course c
    ON c.COURSE_ID = t.COURSE_ID
  where s.ID = 1000
  group by name

Удачи.

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

Предложение from неверно в том, как вы используете скобки.Просто используйте явное предложение join для всех ваших объединений, и вы должны быть в порядке:

SELECT       student.ID, SUM(course.credits)
FROM         student
NATURAL JOIN takes
NATURAL JOIN course 
GROUP BY     student.ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...