Mysql 选择所有聚合都满足特定条件的聚合根
考虑以下情况Mysql 选择所有聚合都满足特定条件的聚合根,mysql,sql,Mysql,Sql,考虑以下情况 http://yuml.me/diagram/scruffy;/class/edit/[Order]++-1..*>[OrderItem] 现在,我想获取订单项,其中所有订单项的行OrderItems都有一个itemSum>100左右。或者对于一个更有意义的用例,不妨考虑 OrthItgs,它有一个属性 StassFiels,我想选择每个OrthItIt项目免费的订单。 如果我只是(左)加入它们,如果一个OrderItem与条件匹配,而不是所有条件匹配,则会显示订单 谢谢
http://yuml.me/diagram/scruffy;/class/edit/[Order]++-1..*>[OrderItem]
现在,我想获取订单项,其中所有订单项的行OrderItems都有一个itemSum>100
左右。或者对于一个更有意义的用例,不妨考虑<代码> OrthItgs<代码>,它有一个属性<代码> StassFiels,我想选择每个OrthItIt项目免费的订单。
如果我只是(左)加入它们,如果一个OrderItem与条件匹配,而不是所有条件匹配,则会显示订单
谢谢你的想法 案例1:
select
*
from
order o
inner join orderItem oi on o.id = oi.orderId
group by o.id
having sum(items) > 100
案例2:
select
*
from
order o
inner join orderItem oi on o.id = oi.orderId
group by o.id
having sum(property = 'shipsFree') = count(*)
实际上我对第二个案例很感兴趣,第一个案例我有点说错了。所以,你可以比较一下,条件匹配的项目的总和是否相同,对吗?我也已经考虑过了,但是我真的无法控制自己。。。所以,谢谢!对于sum(property='shipsFree')
语法,您是否有一些文档参考?它返回符合条件的记录的总和,我想?而且,关于计数(*),这不算所有记录,即订单记录吗?这不是很重要吗(oi.orderId)?像column='whatever'
这样的布尔比较返回true
或false
(1
或0
),因此它返回与条件匹配的记录之和。count(*)
统计每组的所有记录,count(*)
和count(oi.orderId)
之间的唯一区别是,count(*)
返回此组的行数,count(oi.orderId)
将返回此组的行数,其中orderId不为null
。我想你没有没有orderItem的订单吧?那没什么区别。太好了,谢谢你;您是否仍然有SUM()中可能的表达式类型的源?我认为ORM条令中有一个bug,为了证明这一点,我想看看参考资料。。。谢谢你误会我了。当然,它不需要布尔表达式。但是,在计算机字段中,只指定一个布尔表达式不返回1或0的区域。这是我的观点。也许你应该在这里创建一个关于你可能的bug的问题,然后从那里解决它。