postgresql - 从两个匹配的列中获取多行

postgresql - getting multiple rows from two matching columns

我有一个table:约会

image of appointments table

此处parent_appointment_id中的值是appointment_id.

中的值

目前,我得到这样的输出:

select appointment_id, date_time, parent_appointment_id from appointments where appointment_status = 'completed' and patient_id = 2

  {
    "appointment_id": 44,
    "date_time": "2021-01-16T10:05:38.000Z",
    "parent_appointment_id": 44
  },
  {
    "appointment_id": 21,
    "date_time": "2020-08-14T11:20:00.000Z",
    "parent_appointment_id": 2
  },
  {
    "appointment_id": 22,
    "date_time": "2020-04-18T12:00:00.000Z",
    "parent_appointment_id": 2
  },
  {
    "appointment_id": 2,
    "date_time": "2019-03-17T11:30:00.000Z",
    "parent_appointment_id": 2
  }
]

但是我也想显示 parent_appointment_id 的 date_time

像这样:

  {
    "appointment_id": 44,
    "date_time": "2021-01-16T10:05:38.000Z",
    "parent_appointment_id": 44,
        {
          "date_time_of_parent": "2021-01-16T10:05:38.000Z"
        }
  },
  {
    "appointment_id": 21,
    "date_time": "2020-08-14T11:20:00.000Z",
    "parent_appointment_id": 2,
        {
          "date_time_of_parent": "2019-03-17T11:30:00.000Z"
        }
  },
  {
    "appointment_id": 22,
    "date_time": "2020-04-18T12:00:00.000Z",
    "parent_appointment_id": 2,
        {
          "date_time_of_parent": "2019-03-17T11:30:00.000Z"
        }
  },
  {
    "appointment_id": 2,
    "date_time": "2019-03-17T11:30:00.000Z",
    "parent_appointment_id": 2,
        {
          "date_time_of_parent": "2019-03-17T11:30:00.000Z"
        }
  }
]

能否指导我编写 postgresql 查询来获取此输出。

您可以自行加入:

select a.appointment_id, a.date_time, a.parent_appointment_id, 
    p.date_time as date_time_of_parent
from appointments a 
inner join appointments p on p.appointment_id = a.parent_appointment_id 
where a.appointment_status = 'completed' and a.patient_id = 2

如果可能有“遗漏”的家长预约,您可能需要left join

请注意,这实际上并没有按照您的示例数据中显示的方式嵌套结果 - 但我认为这对于那个单独的附加列在这里没有多大意义。