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