Учитывая от задачи, у меня есть эти отношения:Создание запросов SQL и алгебраические выражения из текста
- отдел (DepCode: рк, DepName, DepAdress)
- LoanAccs (LoanAcc: рк, имя, DepCode: Ф.К., Телефон: ск)
- книга (ISBN: рк, Копия: П.К. Автор, Titel, PublishedYear, BoughtYear)
- LoanedBooks (ISBN: Ф.К., Copy: Ф.К., LoanDate: рк, LoanAcc: Ф.К., Returndate)
Из этого ISBN в книге отношений определяется автор, название и год выпуска. Для каждой комбинации ISBN, loanAcc и loanDate в LoanedBooks существует только макс один экземпляр.
Тогда я должен написать запрос SQL и алгебраическое выражение от задачи, которая говорит:
Составьте список, который показывает все взаймы книги, которые старше, чем через четыре недели, которые еще не были возвращены. Список должен содержать имя и адрес заемщиков. А также автор и название книги. Список должен быть отсортирован на depAdress, и если те, у кого есть тот же адрес, на имени заемщиков в каждом отделе.
Я придумал запрос, который выглядит следующим образом =>
SELECT
LoanAccs.name, Department.depAdress, book.author, book.title
LEFT OUTER JOIN
LoanedBooks ON loanAccs.loanAcc = loanedBooks.loanAcc
LEFT OUTER JOIN
Department ON loanAccs.depCode = department.DepCode
LEFT OUTER JOIN
Book ON loanedBooks.ISBN = books.ISBN
HAVING
(CURRENT_DATE - loanedbooks.returndate) <= 28
ORDER BY
depAdress, depCode, name desc;
Я не совсем уверен, что я установил право запроса вверх, поэтому любые комментарии/пояснения будут оценены:)
Также мне интересно, как записать это как алгебраическое выражение. Как начать, что искать при написании.
Кроме того, в зависимости от системы, вы можете 'get_date()' или 'TODAY()' вместо 'CURRENT_DATE'. И в вашем порядке, только «Имя» появится в порядке убывания. Если вы хотите, чтобы все результаты были в порядке убывания, вам нужно будет поместить 'desc' после каждого из них. – Vinnie