SQLite3-从特定用户打印成本最低的书籍';s愿望清单

SQLite3-从特定用户打印成本最低的书籍';s愿望清单,sql,database,sqlite,join,select,Sql,Database,Sqlite,Join,Select,我正在创建一个数据库,用于跟踪书籍、用户以及每个用户的愿望列表上有哪些书籍。我特别想计算的是查找一个名为Jess的特定用户的愿望列表,然后在该用户的愿望列表上打印出价格最低的书 我现在对此提出的查询将“饥饿游戏”打印为Jess愿望列表中价格最低的项目,但问题是Jess的愿望列表中没有一本书叫做《饥饿游戏》。我想我的查询可能是打印数据库中所有书籍的最低价格项目,而不是Jess愿望列表上的书籍,但我不确定为什么它只打印一本书,而有几本书符合最低价格10.00 查询应该打印的是定价为10.00的《我们

我正在创建一个数据库,用于跟踪书籍、用户以及每个用户的愿望列表上有哪些书籍。我特别想计算的是查找一个名为Jess的特定用户的愿望列表,然后在该用户的愿望列表上打印出价格最低的书

我现在对此提出的查询将“饥饿游戏”打印为Jess愿望列表中价格最低的项目,但问题是Jess的愿望列表中没有一本书叫做《饥饿游戏》。我想我的查询可能是打印数据库中所有书籍的最低价格项目,而不是Jess愿望列表上的书籍,但我不确定为什么它只打印一本书,而有几本书符合最低价格10.00

查询应该打印的是定价为10.00的《我们明星的错误》,这是Jess愿望列表中定价最低的书,因为他愿望列表中剩下的两本书定价为30.00

我不确定我的查询逻辑出了什么问题,希望能得到一些帮助。books和wishlist表的共同点是book ID,因此我认为可以通过这种方式连接这些表

模式:

CREATE TABLE IF NOT EXISTS books(
      id integer NOT NULL primary key UNIQUE, 
      title text NOT NULL UNIQUE, 
      genre text NOT NULL, 
      price integer NOT NULL, 
      units_available integer NOT NULL 
      );

CREATE TABLE IF NOT EXISTS wishlist(
      owners_username integer NOT NULL,
      book_id integer NOT NULL,
      PRIMARY KEY (owners_username, book_id),
      FOREIGN KEY (owners_username) REFERENCES users (username),
      FOREIGN KEY (book_id) REFERENCES books (id)
      );
书籍中的数据:

INSERT OR REPLACE INTO books VALUES(48067, 'The Maze Runner', 'Dystopian', 10.00, 20); 
INSERT OR REPLACE INTO books VALUES(5860, 'The Hunger Games', 'Dystopian', 10.00, 4); 
INSERT OR REPLACE INTO books VALUES(48070, 'The Sorcerer's Stone', 'Fantasy', 30.00, 10); 
INSERT OR REPLACE INTO books VALUES(50547, 'The Fault in Our Stars', 'Contemporary', 10.00, 235);
INSERT OR REPLACE INTO books VALUES(48400, 'Hamlet', 'Classic', 10.00, 62);
INSERT OR REPLACE INTO books VALUES(48399, 'Romeo and Juliet', 'Classic', 10.00, 102);
INSERT OR REPLACE INTO books VALUES(55620, 'Pride and Prejudice', 'Classic', 30.00, 5); 
INSERT OR REPLACE INTO books VALUES(55621, 'Oliver Twist', 'Classic', 10.00, 21); 
数据库中存储的所有愿望列表的数据:

INSERT OR REPLACE INTO wishlist VALUES('Bob',  48400);
INSERT OR REPLACE INTO wishlist VALUES('Jess', 55620);
INSERT OR REPLACE INTO wishlist VALUES('Jess', 50547);
INSERT OR REPLACE INTO wishlist VALUES('Jess', 48070);
我的问题是:

SELECT title, MIN(price) as lowest_price FROM books NATURAL JOIN wishlist where owners_username = 'Jess';

title             lowest_price
----------------  ------------
The Hunger Games  11

使用“联接”并指定列。一旦指定了查询,它就会工作

 SELECT title, MIN(price) as lowest_price 
    FROM books JOIN wishlist on id = book_id 
    where owners_username = 'Jess';

自然连接。。。不要偷懒,指定连接列!您还可以指定预期结果吗?预期结果应该是定价为10.00的“我们的明星中的错误”。这是因为Jess的另外两本愿望书的价格都是30.00美元,所以《我们的明星》中的错误就是他愿望书中价格最低的书。