Как создать таблицу для системы подсчета очков в Cassandra

У меня есть таблица для моих продуктов в Cassandra. В этой таблице я храню название продукта и имя продавца (могут быть тысячи продавцов) и оценку (оценка продукта продавца), как показано ниже.

CREATE TABLE products
(
    product_name varchar,
    seller_name varchar,
    score    int,
    primary key (product_name, seller_name)
);

Мне нужно обновить счет в моем коде

UPDATE products SET score = 2 WHERE product_name = "iphone-7" AND seller_name = "jack" ;

Все хорошо, кроме Select Query:

SELECT * FROM products WHERE product_name = "iphone-7" ORDER BY SCORE DESC;

Мне нужно получить продукты по порядку оценок. Но, как вы знаете, невозможно отсортировать без оценки, являющейся первичным ключом.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение состоит в том, чтобы иметь две таблицы, соответствующие вашим требованиям. Например, вторая таблица может быть

CREATE TABLE products_score
(
    product_name varchar,
    score    int,
    primary key (product_name, score)
);

поэтому вы заполняете оба при написании и используете второй для упорядочения по счету

Мне нужно иметь список продуктов с наивысшим баллом и их продавцов. Например, у мобильного товара могут быть тысячи продавцов, каждый продавец получил свой балл за этот товар.

Jack 18.12.2020 12:33

например: строка 1 -> имя_продукта: iphone7- имя_продавца: jack- оценка: 5 / строка 2 -> имя_продукта: iphone7- имя_продавца: Алекс - оценка: 2

Jack 18.12.2020 12:35

затем вы добавляете имя продавца в индекс. первичный ключ (название_продукта, оценка, имя_продавца). там вы можете запросить так: выберите * из таблицы, где product_name = 'x' упорядочить по счету DESC, продавец_название DESC

Alex Tbk 18.12.2020 12:35

Другие вопросы по теме