Выберите отдельные данные из одной ко многим таблицам отношений в sqlalchemy - PullRequest
0 голосов
/ 30 января 2020

У меня есть две модели

model A (идентификатор, имя, статус) и model B (идентификатор, A.id, создан), каждый Когда я изменяю статус A и создаю новую строку в B.

Я хочу объединить A и B для получения последних созданных для каждого A.

Я пробовал это, но не получаю отчетливый

select a.id, a.status, max(aas.created) 
from a  
inner join b on a.id=b.a.id 
group by a.created, a.id, b.a.id;

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Почему бы просто не использовать агрегацию?

select a.id, a.status, max(b.created) 
from a  inner join
     b
     on a.id = b.a.id 
group by a.id, a.status;
0 голосов
/ 30 января 2020

Используйте подзапрос, чтобы добиться этого. Это будет небольшим изменением в вашем запросе, он выдаст последние созданные:

select a.id, a.user_id,a.job_id, aas.created from public.application a  inner join public.application_status aas on aas.application_id=a.id where aas.created = 
(select max(aas.created) from public.application_status aas) 

, если вы хотите его для каждого A

select a.id, a.user_id,a.job_id, aas.created 
from public.application a  
inner join (select aas.application_id, max(aas.created) from 
public.application_status aas group by aas.application_id) as on as.application_id=a.id  
...