簡體   English   中英

在父表和子表上排列“ where”

[英]Sequelize 'where' on parent and child tables

我需要通過sequelize(使用mysql)在兩個表(父表和子表)中進行查詢。

問題是,當我在父表上使用where子句時,它將丟棄子表上的結果。

用SQL Word我需要類似的東西

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語句,它丟棄了子結果

更新

我的代碼是這樣的:

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

現在有人為什么會這樣嗎?

謝謝!

好吧,僅出於了解目的,我在此頁面中找到了答案:

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

在閱讀了許多論壇和帖子之后,結果是,如果我在該字段前后設置“ $”拼寫錯誤,此查詢就可以工作了……它將是這樣的:

var childTable = {model:child.model};
queryOptions = {};
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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM