【发布时间】:2019-10-30 08:07:14
【问题描述】:
我有一个包含以下三个文档的存储桶:
coffee {
id
}
cold_coffee {
coffeeId
number
}
warm_coffee {
coffeeId
number
}
我使用 Couchbase Server Community Edition 6.0.0 在 N1QL 中编写了以下查询:
SELECT META(coffee).id as coffeeId,
SUM(cold_coffee.`number`) as `ccNumber`,
SUM(warm_coffee.`number`) as `wcNumber`,
FROM coffee_bucket coffee
left JOIN coffee_bucket cold_coffee
ON META(coffee).id = cold_coffee.coffeeId
and cold_coffee.type='cold_coffee'
left JOIN coffee_bucket warm_coffee
ON META(coffee).id = warm_coffee.coffeeId
and warm_coffee.type='warm_coffee'
where coffee.type='coffee'
group by META(coffee).id;
每份咖啡都有多个cold_coffee 和warm_coffee 文档,我需要对所有cold_coffee 和warm_coffee 文档的数字求和。我遇到的问题是,例如,如果我有以下文件:
[
coffee {
id: 1
},
cold_coffee {
coffeeId:1
number:5
},
cold_coffee {
coffeeId:1
number:5
},
warm_coffee {
coffeeId:1
number:10
}
]
我的总数如下:
ccNumber: 10
wcNumber:20
似乎是因为加入,单个 warm_coffee 文档被计算了两次?
我遇到了这个site,可能有同样的错误,但不幸的是它是 SQL。
我不确定如何使用 N1QL 解决这个问题,因为 JOIN 的右手术语必须是表/存储桶,如下面的post 所示。
这是一个可能的solution,但我不确定如何实现这是 N1QL?
有人可以帮忙吗?
【问题讨论】: