列中每个值的序列号

时间:2019-03-25 23:57:58

标签: sql postgresql auto-increment

我有两个表,一个表充当购物车,其中每一行都引用一个用户。另一个用于购物车中的物品,外键引用购物车ID。 我正在尝试找出为每个购物车中的每个商品制作序列号的最佳方法。

现在,我要按商品ID对其商品进行排序,然后将商品按结果数组中的正确索引进行排序,但这效率极低,因为我必须获取整个商品表才能获取单个商品。

这是我的表格目前的样子:

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]

有什么方法可以设置表格来做到这一点?

0 个答案:

没有答案