MySQL如何使用Where子句获得一对多关系的结果
我有两个带有属性(id、名称)的表,一个人可以有多本带有属性(名称、状态)状态的书,如果他是否完成了这本书。当一个人完成了a册但没有完成B册时,我如何获得结果MySQL如何使用Where子句获得一对多关系的结果,mysql,one-to-many,Mysql,One To Many,我有两个带有属性(id、名称)的表,一个人可以有多本带有属性(名称、状态)状态的书,如果他是否完成了这本书。当一个人完成了a册但没有完成B册时,我如何获得结果 Select * from Person, Book, PersonBook Where Person.id = PersonBook.personid and Book.id = PersonBook.bookid and ( book.name = "BookA" and bo
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"
我没有尝试过,但它应该工作得很好,也要确保没有语法错误,因为我没有检查它
如果不起作用,请告诉我
祝你好运 状态,如果他已完成账簿或未显示“已完成”和“未完成”值的真实值。例如,
'notcompleted'
值与匹配,如“%Completed%”
条件……为了了解更多信息,请您提供其中三个表中的数据示例?请用文字而不是图片发布。谢谢