我有两个表,一个表充当购物车,其中每一行都引用一个用户。另一个用于购物车中的物品,外键引用购物车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]
有什么方法可以设置表格来做到这一点?