SQL-запрос, чтобы проверить, не существует ли запись в другой таблице - PullRequest
0 голосов
/ 22 апреля 2019

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

CREATE TABLE studentInClass(
studentID int,
classID int,
FOREIGN KEY(studentID) references students(studentID),
foreign key(classID) references class(classID)
);

И еще одна таблица, в которой содержатся сведения о студентах, оплативших занятия:

CREATE TABLE fees(
feesID INTEGER PRIMARY KEY AUTOINCREMENT, 
StudentID INTEGER, 
AmountPaid INT, 
Date DATE, 
FOREIGN KEY(StudentID) REFERENCES students(StudentID));

Что я хочу сделать, это проверить, не заплатил ли ученик, который находится в классе, за этот класс.Я изо всех сил пытаюсь написать запрос SQL, который делает это.Я пробовал несколько запросов, таких как:

Select studentInClass.StudentID
from fees, studentInClass 
where fees.StudentID = studentInClass.StudentID;

Но это не возвращает данных.Я не уверен, что делать дальше.Любая помощь будет оценена.

Ответы [ 3 ]

4 голосов
/ 22 апреля 2019

Вы хотите outer join:

select s.StudentID, (case when f.AmountPaid is not null 
                          then 'Yes' 
                          else 'No' 
                     end) as Is_fees_paid
from studentInClass s left join
     fees f
     on f.StudentID = s.StudentID; 
1 голос
/ 22 апреля 2019

С NOT EXISTS:

select s.*
from studentInClass s
where not exists (
  select 1 from fees
  where studentid = s.studentid
) 

с этим вы получаете все строки из таблицы studentInClass, для которых в таблице нет * * * * * * * * * * *Не ясно, нужно ли вам также проверять дату.

0 голосов
/ 22 апреля 2019

проверьте пожалуйста:

select studentInClass.StudentID
from studentInClass inner join fees ON fees.StudentID = studentInClass.StudentID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...