Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL如何使用Where子句获得一对多关系的结果_Mysql_One To Many - Fatal编程技术网

MySQL如何使用Where子句获得一对多关系的结果

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

我有两个带有属性(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"
我没有尝试过,但它应该工作得很好,也要确保没有语法错误,因为我没有检查它

如果不起作用,请告诉我


祝你好运

状态,如果他已完成账簿或未显示“已完成”和“未完成”值的真实值。例如,
'notcompleted'
值与
匹配,如“%Completed%”
条件……为了了解更多信息,请您提供其中三个表中的数据示例?请用文字而不是图片发布。谢谢