相关疑难解决方法(0)

PostgreSQL JOIN与数组类型的数组元素顺序,如何实现?

我在数据库中有两个表:

CREATE TABLE items(
 id SERIAL PRIMARY KEY,
 ... some other fields
);
Run Code Online (Sandbox Code Playgroud)

此表包含具有唯一ID的数据行.

CREATE TABLE some_chosen_data_in_order(
 id SERIAL PRIMARY KEY,
 id_items INTEGER[],
);
Run Code Online (Sandbox Code Playgroud)

);

该表包含数组类型字段.每行包含items特定顺序的表中ID的值.例如:{2,4,233,5}.

现在,我想从表中获取表items中所选行的数据,some_chosen_data_in_order以及数组类型中元素的顺序.

我的尝试是加入:

SELECT I.* FROM items AS I 
JOIN some_chosen_data_in_order AS S ON I.id = ANY(S.id_items) WHERE S.id = ?
Run Code Online (Sandbox Code Playgroud)

第二次尝试是子查询,如:

SELECT I.* FROM items AS I 
WHERE I.id = ANY 
(ARRAY[SELECT S.id_items FROM some_chosen_data_in_order  WHERE id = ?])
Run Code Online (Sandbox Code Playgroud)

但是它们都没有以与数组字段相同的顺序保存ID.你能帮我吗,如何从items表中获取数据,并从some_chosen_data_in_order表格中获取特定行的数据ID顺序?

sql arrays postgresql join

33
推荐指数
3
解决办法
5万
查看次数

SQL外键数组引用非数组

CREATE TABLE orders (
   id          SERIAL PRIMARY KEY,
   productid   INTEGER[] NOT NULL,
   amount      INTEGER[] NOT NULL,
   totalprice   FLOAT NOT NULL,
   ordertime    TIMESTAMP NOT NULL,
   FOREIGN KEY (productid) REFERENCES products(id)
);
Run Code Online (Sandbox Code Playgroud)

我试图创建一个表来记录订单.由于那个订单可能包含多个产品,我计划使用数组来记录每个产品的产品,同样数量的产品.但是当我想让productid成为引用表产品的id属性的外键时,我发现productid是一个数组,但是products(id)只是一个数字.如何解决这个问题,使productid数组的每个元素都引用产品(id)?我正在使用postgresql btw.

Thx adhead!

sql postgresql

5
推荐指数
2
解决办法
2770
查看次数

如何在 PostgreSQL 中的数组上添加外键约束?

如何在 PostgreSQL 中的数组上添加外键约束?

角色查找表

CREATE TABLE party_role_cd
(
  party_role_cd bigint NOT NULL,
  code character varying(80) NOT NULL,
  CONSTRAINT party_role_cd PRIMARY KEY (party_role_cd)
);
Run Code Online (Sandbox Code Playgroud)

参与方可以有零个或多个角色 [0-N 关系]

CREATE TABLE party
(
  party_id biging NOT NULL,
  party_role_cd bigint[] NOT NULL,
  CONSTRAINT party_id PRIMARY KEY (party_id)
);
Run Code Online (Sandbox Code Playgroud)

如何在表中添加foreign key约束?party_role_cd arrayparty

arrays postgresql constraints postgresql-12 postgresql-13

4
推荐指数
1
解决办法
3476
查看次数