Серийный идентификатор для каждого значения в столбце - PullRequest
0 голосов
/ 26 марта 2019

У меня есть две таблицы, одна действует как корзина покупок, где каждая строка ссылается на пользователя.Другой - для товаров в корзинах с внешним ключом, ссылающимся на идентификатор корзины.Я пытаюсь найти лучший способ сделать серийные идентификаторы для каждого товара в каждой отдельной корзине.

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

Вот как в настоящее время выглядят мои таблицы:

CREATE TABLE carts (
  id SERIAL PRIMARY KEY,
  userId INT NOT NULL REFERENCES users(id),
  isOrder BOOLEAN DEFAULT FALSE,
  created TIMESTAMP WITH TIME ZONE NOT NULL 
    DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE items (
  id SERIAL PRIMARY KEY,
  cartId INTEGER NOT NULL REFERENCES carts(id),
  product INTEGER NOT NULL REFERENCES products(id),
  quantity INTEGER DEFAULT 1
);

ЧтоЯ бы хотел, чтобы таблица предметов выглядела примерно так:

 id | cartid | product | quantity 
----+--------+---------+----------
  1 |      1 |       3 |      450
  2 |      1 |       5 |       45
  3 |      1 |       1 |       45
  4 |      1 |       9 |       45
  1 |      2 |       4 |       45
  2 |      2 |       4 |       45
  3 |      2 |       5 |       45
  4 |      2 |       8 |       45

Итак, я хочу иметь возможность получить, скажем, пятый предмет, добавленный в корзину № 2, примерно так:

SELECT * FROM items
WHERE id = 5 AND cartId = 2

Вместо того, что я делаю сейчас:

SELECT * FROM items
WHERE cartId = 2
ORDER BY id

И в массив Javascript, который передается в:

Const item = result.rows[4]

Есть ли способ настроитьтаблицы для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...