繁体   English   中英

MySQL 如何获得与 Where 子句具有一对多关系的结果

[英]MySQL how to get a result with one to many relationship with Where clause

我有两个具有属性(id,名称)的人表,一个人可以拥有多本具有属性(名称,状态)状态的书,无论他是否完成了这本书。 当一个人完成了书 A 但没有完成书 B 时,我如何获得结果。

Select * 
from Person, Book, PersonBook 
Where Person.id = PersonBook.personid 
  and Book.id = PersonBook.bookid 
  and (    book.name = "BookA" 
       and book.status like "%Completed%") 
  and (    book.name = "BookB" 
       and book.status not like "%Completed%")

我应该对此查询进行哪些更改以获得所需的结果,因为目前此查询将返回空结果。

你可以试试:

select pb.* from PersonBook pb join Person p on pb.personid = p.id join Book b1 on pb.bookid = b1.id and b1.name = "BookA" and b1.status like "Completed" join Book b2 on pb.bookid = b2.id and b2.name = "BookB" and b2.status not like "Completed"

还没有尝试过,但它应该工作得很好,还要确保没有语法错误,因为我没有检查过。

如果它不起作用,请告诉我。

祝你好运 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM