顶部的 BigQuery 获取一组产品和嵌套的相关表。然后,我在规范模式上进行了一次糟糕的尝试应用过滤。这是过滤器代码。查询中有三个表,我想通过嵌套在底部查询中的值来过滤顶部查询。就像我说的,这目前产生了我们想要的结果。
然而,.Contains() 为每个生成一个 SQL WHERE EXISTS() 子句。我们确实只需要一个,但我不知道如何获取内部 ID 来与外部 ID 进行比较。
from p in bigQuery // Root table
where ( from pp in p.LPP // Level 1 nested table
where (from pv in pp.LPV // Level 2 nested table
where pv.colorid == intValue // Our filter value
select p.id).Contains(p.id) // Where exists
select p.id).Contains(p.id) // Where exists
select p;
有什么想法吗?这会按原样生成 900 行 SQL 语句,并且到目前为止我们只有一个过滤器。
from p in bigQuery
where p.LPP.SelectMany(pv => pv.LVP).Any(x => x.colorid == intValue)
select p;
据我所知,上面应该是等价的。请尝试并检查生成的 SQL 是否有效。无论如何,应该不会太遥远。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)