用记录数组替换id的数组列 - SQL

时间:2016-12-16 10:35:12

标签: postgresql

让我们忽略数据库设计 - https://stackoverflow.com/questions/41180638/sql-replacing-an-array-column-of-ids-with-an-array-of-the-records。如果可能的话,我更加好奇。我有一个名为订单的表,其中包含一列产品。在此列中是一个数组,其中包含订单中所有产品的ID。我可以查询产品并用结果替换产品列吗?这是我到目前为止所做的,但是在子查询上有太多列的错误。

SELECT o.*, ( SELECT p.* FROM products p WHERE p.id = ANY(o.products::int[])) products FROM orders o

订单表:

ID      Products   Status    Total
1       [1,2,5]    1         4
2       [1,3,5]    1         5
3       [1,3,6]    1         5

产品表:

ID      Name              Price
1       Blue shoe         1
2       Red Shoe          1 
3       Green Shoes       2
4       Purple Shoe       1
5       Orange Shoes      2
6       Pink Shoes        2

所需输出 - 选择第一个订单。

{
  ID:1,
  Products:[ <Products Record-1>, <Products Record-2>, <Products Record-5>
           ],
  Status: 1,
  Total: 4
}

0 个答案:

没有答案