繁体   English   中英

Postgres 按子查询/多个子查询排序

[英]Postgres Ordering by subquery/multiple subqueries

我有四个模型:表、列、行、单元格。 一个单元格属于一个行和一个列,它们都属于一个表。 它的 UI 看起来像典型的表格视图,显示的值是单元格的值。

单元格有一个值。 每个表也有一个“键”类型的列,其单元格的值是唯一的。

列可以是关系类型的,这意味着它们的单元格值引用不同表(链接表)的键列中的单元格。 这样,关系单元格实际上将“属于”链接表中的一行,因为键值是唯一的。

对于关系型单元格,用于显示的值不是单元格中存储的值(来自链接表的键列的值)。 我们让用户从链接表中选择一个列作为“显示列”,这些值是用于在此表的关系列中显示的值。

通常,我们通过选择排序的列中的普通旧单元格值对行进行排序。 但是,当按关系类型的 Column 排序时,我们希望按其 Cell 的显示值排序。 这意味着对于每一行,我们需要找到存储在关系单元格中的值(来自链接表的键值),从链接表中找到其键列的单元格与该值匹配的对应行,然后找到该行的值显示列的单元格,然后按该值排序。

一些样本值。

表格1

Column 1 (key)  | Column 2
1               | b
2               | a
3               | c

表 2

第 2 列链接到表 1。这意味着它存储来自表 1 的键值,但当前使用来自表 1 的第 2 列的值作为其显示列。

表 2 中的实际值:

Column 1 (key)  | Column 2 (relational)
4               | 1
5               | 2
6               | 3

显示的内容:

Column 1 (key)  | Column 2 (relational)
4               | b
5               | a
6               | c

订购后,表 2 应如下所示:

Column 1 (key)  | Column 2 (relational)
5               | a
4               | b
6               | c

坦率地说:我完全不知道如何构造这个 SQL 查询/子查询。 任何为我指明正确方向的建议将不胜感激。

如果我正确地跟随,您想要joinorder by

select t2.column1, t1.column2
from table2 t2 join
     table1 t1
     on t2.column2 = t1.column1
order by t1.column2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM