Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL库数据库模式_Sql_Sqlite - Fatal编程技术网

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(主键)、贷款日期(主键)、归还日期)
会员可以从图书馆借书。他们可以借阅的图书数量受成员关系的“限制”字段限制(不同成员的限制可能不同)。书的类别包括小说、非小说、儿童读物和参考读物。CurrentLoan表表示有关当前已签出的书籍的信息。当书籍返回到库中时,该记录将从CurrentLoad关系中删除,并将插入到历史关系中,与归还日期保持一致。一个图书馆可能有同一本书的多个副本,在这种情况下,每个副本都有自己的图书ID,但所有副本共享相同的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 
伍尔夫,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';