根据存储在另一个表中的列名获取值

时间:2019-04-19 09:30:43

标签: sql postgresql

我具有以下表格结构:

"DocumentSubject"
(
  "Id" SERIAL NOT NULL,
  "Description" text,
  "List1Left" text,
  "List1Right" text
);

"DocumentRegistryAttributes"
(
  "Id" SERIAL NOT NULL,
  "DocumentSubjectId" integer,
  "Code" text,
  "WorkDetails" text,
  "Name" text
);

DocumentSubject中有一个名为List1Left的列,其中包含DocumentRegistryAttributes表f中的列名。 Code。 我可以根据存储在Code表中的字符串列名称从DocumentRegistryAttributes中检索列DocumentSubject的值吗? 我需要这样的东西:

"DocumentRegistryAttributes"["DocumentSubject"."List1Left"] <-首先从表“ DocumentSubject”中获取“ List1Left”列的值,然后从“ DocumentRegistryAttributes”表中检索此列的值。

这里是小提琴:http://www.sqlfiddle.com/#!17/6cbc3/1

真正的问题是,我不能在WHERE子句中使用任何静态条件。 DocumentRegistryAttributes表中的每个文档可以分配给DocumentSubject表中的不同主题,并且每个主题可以具有不同的配置。

有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用to_jsonb()"DocumentRegistryAttributes"中的行创建JSON,以列名作为键,然后从JSON中选择文本,其中键是{{1}中的文本}。

"DocumentSubject"."List1Left"