Вопрос, который у меня возникает, - найти идентификатор книги, название и срок оплаты всех книг, которые в настоящее время проверяются Джоном Смитом.
Это схема:
- Книга (bookID (PK), ISBN, название, автор, год публикации, категория)
- Member (memberID (PK), фамилия, имя, адрес, номер телефона, лимит)
- CurrentLoan (memberID (PK), bookID (PK), дата займа, срок оплаты)
- История (memberID (PK), bookID (PK), дата займа (PK), дата возврата)
Члены могут брать книги в библиотеке. Количество книг, которые они могут заимствовать, ограничено полем «лимит» отношений между членами (оно может отличаться для разных участников). Категория книги включает художественную литературу, беллетристику, детскую и справочную литературу. Таблица CurrentLoan представляет информацию о книгах, которые в настоящее время извлечены. Когда книга будет возвращена в библиотеку, запись будет удалена из отношения CurrentLoad и будет вставлена в отношение History с датой возврата. Библиотека может иметь более одной копии одной и той же книги, и в этом случае каждая копия имеет свой собственный bookID, но все копии имеют один и тот же ISBN.
CREATE TABLE Book
(
bookID INT NOT NULL,
ISBN INT NOT NULL,
title VARCHAR NOT NULL,
Author CHAR,
publish_year INT,
category VARCHAR,
PRIMARY KEY (bookID)
);
CREATE TABLE Member_
(
memberID INT NOT NULL,
lastname CHAR NOT NULL,
firstname CHAR NOT NULL,
address_ VARCHAR,
phone_number INT,
limit_ INT,
PRIMARY KEY (memberID, lastname, firstname)
);
CREATE TABLE CurrentLoan
(
memberID INT NOT NULL,
bookID INT NOT NULL,
loan_date DATE,
due_date DATE,
PRIMARY KEY (memberID, bookID),
FOREIGN KEY (bookID) REFERENCES Book(bookID)
);
CREATE TABLE History
(
memberID INT NOT NULL,
bookID INT NOT NULL,
loan_date DATE NOT NULL,
return_date DATE,
PRIMARY KEY (memberID, bookID, loan_date),
FOREIGN KEY (bookID) REFERENCES Book(bookID),
FOREIGN KEY (memberID) REFERENCES Member_(memberID)
);
INSERT INTO Member_
VALUES (1001, 'Smith', 'John', 'Captial road', 9195863230, 10);
INSERT INTO Member_
VALUES (2123, 'Sacks', 'Mark', '7th Black Street', 9195627774, 10);
INSERT INTO Member_
VALUES (3456, 'Johnson', 'Susan', '405 South', 9198564325, 10);
INSERT INTO Member_
VALUES (4223, 'States', 'Nick', '12th East Street', 9198889999, 10);
INSERT INTO Member_
VALUES (5987, 'Stew', 'Martha', '85 North', 9193642256, 10);
INSERT INTO Book
VALUES (0001, 444222666325, 'Mars', 'Mark Sas', 2001, 'fiction');
INSERT INTO Book
VALUES (0002, 784566512135, 'The Cow', 'Stephy Williams', 1996, 'children');
INSERT INTO Book
VALUES (0003, 488984115444, 'XML for beginners', 'Jake Snow', 2005, 'non-fiction');
INSERT INTO Book
VALUES (0004, 544465545655, 'Into Thin Air', 'Jon Krakauer', 1990, 'non-fiction');
INSERT INTO Book
VALUES (0005, 878745656513, 'And Tango Makes Three', 'Peter Parnell', 1956, 'children');
INSERT INTO Book
VALUES (0006, 564564123213, 'Swimmy', 'Leo Lionni', 2010, 'children');
INSERT INTO Book
VALUES (0007, 132125645678, 'XML and XQuery Tutorial', 'Lee Cakes', 2014, 'non-fiction');
INSERT INTO Book
VALUES (0008, 132154548746, 'Happy Places', 'Steve Zus', 1998, 'refrence');
INSERT INTO Book
VALUES (0009, 788897998754, 'The Mascot', 'Kevin Bacon', 1987, 'fiction');
INSERT INTO Book
VALUES (0010, 878561132116, 'XQuery for beginners', 'Virginia
Woolf ', 2018, «non-fiction»);
INSERT INTO CurrentLoan VALUES (5987, 0004, '13-SEP-17', '14-NOV-17');
INSERT INTO CurrentLoan VALUES (2123, 0003, '13-JAN-17', '15-NOV-17');
INSERT INTO CurrentLoan VALUES (4223, 0009, '14-FEB-17', '12-MAR-17');
INSERT INTO CurrentLoan VALUES (1001, 0005, '12-OCT-17', '09-NOV-17');
INSERT INTO CurrentLoan VALUES (2123, 0002, '13-APR-17', '12-MAY-17');
INSERT INTO History VALUES (4223, 0007, '14-Jan-17', '04-OCT-17');
INSERT INTO History VALUES (3456, 0001, '12-Jan-17', '04-NOV-17');
INSERT INTO History VALUES (1001, 0003, '14-APR-17', '08-OCT-17');
INSERT INTO History VALUES (5987, 0009, '14-MAY-17', '04-DEC-17');
Это запрос, но он выводит все значения CurrentLoan, может кто-нибудь помочь мне, чтобы он выводил только значения Джона Смита:
SELECT
Book.bookID, title, due_date
FROM
Book, Member_
INNER JOIN
CurrentLoan ON Book.bookID = CurrentLoan.bookID
WHERE
Member_.lastname = 'Smith' AND Member_.firstname = 'John';
Вопрос, который мне нуженОтвет таков: найдите идентификатор, название и срок оплаты всех книг, которые в настоящее время проверяются Джоном Смитом.