[英]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.