У меня есть таблица Users
с отношением один-ко-многим на столе Visits
(у каждого User
было два Visits
).В Visits
указано несколько столбцов, включая Score
.Для каждого User
я бы хотел рассчитать разницу в их Score
между двумя Visits
.
Какой самый разумный способ сделать это с помощью SQLAlchemy?Вместо того, чтобы вычислять разницу непосредственно в вызове базы данных, я бы хорошо потянул Score
для каждого Visit
, предполагая, что они уже сопоставлены через одного и того же пользователя.Тогда это просто Score1-Score2
.
Примечание: просто вытащить все Score
и Users
, где Visits.visit_number==1
, а затем снова, где Visits.visit_number==2
.
data = session.query(Visit.Score, User.id).join(User).filter(Visits.visit_number==1)
data2 = session.query(Visit.Score, User.id).join(User).filter(Visits.visit_number==2)
Проблема в том, что сопоставление двух наборов баллов является серьезной проблемой (так как они не будут в порядке пользователя, и могут быть пользователи, у которых еще не было второго посещения).Я уверен, что есть элегантный способ сделать это в SQLAlchemy, возможно, с псевдонимами.