SQL库数据库模式
我的问题是找到约翰·史密斯目前正在借出的所有书籍的书号、书名和截止日期 这是模式:SQL库数据库模式,sql,sqlite,Sql,Sqlite,我的问题是找到约翰·史密斯目前正在借出的所有书籍的书号、书名和截止日期 这是模式: 图书(书号(PK)、ISBN、书名、作者、出版年份、类别) 成员(成员ID(PK)、姓、名、地址、电话号码、限制) 当前贷款(memberID(PK)、bookID(PK)、贷款日期、到期日) 历史记录(memberID(主键)、bookID(主键)、贷款日期(主键)、归还日期) 会员可以从图书馆借书。他们可以借阅的图书数量受成员关系的“限制”字段限制(不同成员的限制可能不同)。书的类别包括小说、非小说、儿童
- 图书(书号(PK)、ISBN、书名、作者、出版年份、类别)
- 成员(成员ID(PK)、姓、名、地址、电话号码、限制)
- 当前贷款(memberID(PK)、bookID(PK)、贷款日期、到期日)
- 历史记录(memberID(主键)、bookID(主键)、贷款日期(主键)、归还日期)
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
伍尔夫,2018年,非小说类)
这是查询,但它输出所有当前贷款值。有人能帮我让它只输出John Smith提供的值吗:
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';
我需要回答的问题是:查找John Smith当前正在借出的所有书籍的图书ID、标题和截止日期。试试:
SELECT book.bookID, title, due_date
FROM Book
INNER JOIN CurrentLoan ON Book.bookID= CurrentLoan.bookID
inner join Member on Member.memberID = CurrentLoan.memberID
WHERE Member.lastname='Smith' AND Member.firstname= 'John';
我还有一个问题,请查找过去或现在从未借过任何书籍的会员ID、姓氏和名字。你能帮我选择member.*从member left在CurrentLoan上加入CurrentLoan.memberID=member.memberID在history上左加入history.memberID=member.memberID其中history.memberID为null,CurrentLoan.memberID为null我想这是来自该成员的。*将所有成员替换为mamber_-旧样式的逗号分隔列表在ANSI-92 SQL标准中(25年前),表格样式被正确的ANSI
JOIN
语法所取代,不鼓励使用
SELECT book.bookID, title, due_date
FROM Book
INNER JOIN CurrentLoan ON Book.bookID= CurrentLoan.bookID
inner join Member on Member.memberID = CurrentLoan.memberID
WHERE Member.lastname='Smith' AND Member.firstname= 'John';