Mysql 使用内部联接会产生太多的结果

Mysql 使用内部联接会产生太多的结果,mysql,Mysql,我的内部连接有问题。我假设我在理论上犯了一些关键但基本的错误 表结构: BookDB-此表包括我们图书馆中书籍的相关数据(标题、条形码、签出状态等) LibraryDB-此表包含有关谁在何时签出哪本书的数据 StudentDB-此表包含有关学生的数据(姓名、id号等) 我制作了一个页面,使用BookDB表的签出状态列出了当前签出的所有书籍。但这当然不会让我知道是谁拿的 为了显示谁签出了这本书,我想调用LibraryDB,它记录了谁签出了这本书,然后调用StudentDB,它包含了学生的名字,

我的内部连接有问题。我假设我在理论上犯了一些关键但基本的错误

表结构:

  • BookDB-此表包括我们图书馆中书籍的相关数据(标题、条形码、签出状态等)
  • LibraryDB-此表包含有关谁在何时签出哪本书的数据
  • StudentDB-此表包含有关学生的数据(姓名、id号等)
我制作了一个页面,使用BookDB表的签出状态列出了当前签出的所有书籍。但这当然不会让我知道是谁拿的

为了显示谁签出了这本书,我想调用LibraryDB,它记录了谁签出了这本书,然后调用StudentDB,它包含了学生的名字,等等

所以我提出了这样一个问题:

SELECT * FROM BookDB 
INNER JOIN LibraryDB ON BookDB.barcode = LibraryDB.barcode
INNER JOIN StudentDB ON LibraryDB.studentid = StudentDB.studentid
WHERE BookDB.status = '$checkinstatus' 
ORDER BY title ASC
问题是,我得到的不是最近检查过的人的结果,而是所有检查过的人的结果

我意识到这可能很简单,但我试过看其他类似的帖子,但似乎无法解决这里的基本问题。我意识到我需要以某种方式限制查询,但不知道以我想要的方式进行查询的语法

提前谢谢

编辑:我的当前输出如下所示:

Animals in danger   A1  Shingen Tomita  9780194233798   Edit Book   Delete Book
Armans journey  A1  Ayaka Morikawa  9780521184939   Edit Book   Delete Book
Armans journey  A1  Ayaka Morikawa  9780521184939   Edit Book   Delete Book
Armans journey  A1  Naomi Maki  9780521184939   Edit Book   Delete Book
Armans journey  A1  Naomi Maki  9780521184939   Edit Book   Delete Book
Armans journey  A1  Iwamoto Kazumi  9780521184939   Edit Book   Delete Book
Armans journey  A1  Iwamoto Kazumi  9780521184939   Edit Book   Delete Book
Armans journey  A1  Kanata Shokai   9780521184939   Edit Book   Delete Book
Bens big swim   OD1 Keiichiro Takemura  9780194722674   Edit Book   Delete Book
Bens big swim   OD1 Keiichiro Takemura  9780194722674   Edit Book   Delete Book
Bens big swim   OD1 Takato Suzuki   9780194722674   Edit Book   Delete Book
对于所有相同的书籍,我只想输出每个独特书籍的最后一个条目:

Animals in danger   A1  Shingen Tomita  9780194233798   Edit Book   Delete Book
Armans journey  A1  Kanata Shokai   9780521184939   Edit Book   Delete Book
Bens big swim   OD1 Takato Suzuki   9780194722674   Edit Book   Delete Book

您可以这样尝试:

SELECT * FROM BookDB,LibraryDB,StudentDB WHERE BookDB.barcode = LibraryDB.barcode AND LibraryDB.studentid = StudentDB.studentid AND  BookDB.status = '$checkinstatus' ORDER BY title ASC;

所以我不知道该怎么做,所以我只是去BookDB添加了一列,显示最近的检查对象是谁,这样就不需要调用LibraryDB记录表,因此,我们解决了获取所有过去记录而不仅仅是最近记录的问题。

您可以尝试
ORDER BY LibraryDB.date DESC LIMIT 1
获取给定
$checkinstatus
的最新书籍。感谢您的建议。这为我提供了签入状态的最新图书,但我希望获得每个图书的最新状态。我把这个例子放在我原来的帖子里。你能提供你的模式和数据的插入语句吗?这将返回与我发布的查询相同的结果。