У меня есть корзина, содержащая следующие три документа:
coffee {
id
}
cold_coffee {
coffeeId
number
}
warm_coffee {
coffeeId
number
}
Я написал следующий запрос в N1QL с использованием Couchbase Server Community Edition 6.0.0:
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подсчитывается дважды?
Я столкнулся с этим сайтом , возможно, с той же ошибкой, но, к сожалению, это SQL.
И я не уверен, как решить эту проблему с помощью N1QL, потому чтоПравильный термин JOIN должен быть таблицей / контейнером, как показано в следующем post .
Вот возможное решение , но я не уверен, как реализоватьэто N1QL?
Может кто-нибудь помочь?