在父表和子表上添加“where”

我需要在两个表(父母和孩子),通过sequelize(与MySQL)进行查询。

问题是当我在父表上使用where子句时,它放弃了子表上的结果。

在SQL Words中,我需要类似的东西

SELECT * FROM PARENT INNER JOIN CHILD ON PARENT.ID = CHILD.PARENTID WHERE PARENT.FIELD LIKE 'A' OR CHILD.FIELD LIKE 'A' 

相反,sequelize总是返回类似的东西

 SELECT * FROM PARENT INNER JOIN CHILD ON PARENT.ID = CHILD.PARENTID AND (CHILD.deletedAt IS NULL AND (CHILD.FIELD LIKE 'A')) WHERE (PARENT.deletedAt IS NULL AND (PARENT.FIELD LIKE 'A')) 

我检查了数据,子查询带来了结果,但是由于父查询中的where语句,它丢弃了子结果

UPDATE

我的代码是这样的:

 var childTable = {model:child.model,where.$or:{childField:{$like:'A'}}}; queyrOptions = {}; queryOptions.include = [chilldTable]; queryOptions.where = {$or:{parentField:{$like:'A'}}} Parent.findAll(queryOptions).then(res.send.bind(res)) .catch(errorHandler(res, next)); 

现在有人为什么这是发生?

谢谢!

那么只为了解目的,我在这个页面中find了答案:

https://www.bountysource.com/issues/8468317-querying-on-where-association

看了很多论坛和post后,结果是,如果我在字段前后设置“$”的错字,这使查询工作…这将是这样的:

 var childTable = {model:child.model}; queyrOptions = {}; queryOptions.include = [chilldTable]; queryOptions.where = {$or:{parentField:{$like:'A'}, '$childTable.field$':{$like:'A'}} Parent.findAll(queryOptions).then(res.send.bind(res)) .catch(errorHandler(res, next));