Предположим, у меня есть 3 таблицы: A, B, C.Укажите "базу" из-таблицы в SQLAlchemy
A: id, fieldA
B: id, id_a, fieldB; id_a - foreign key for A.id
C: id, id_b, fieldC; id_b - foreign key for B.id
Теперь я хочу, чтобы запустить этот SQL-запрос:
SELECT A.fieldA,
B.fieldB
FROM C
LEFT JOIN B
LEFT JOIN A
ON A.id = B.id_a
ON B.id = C.id_b
WHERE C.fieldC = :myvalue
запросе SQLAlchemy будет:
session.query(A.fieldA, B.fieldB).join(...).join(...).filter(C.fieldC == myvalue)
^------------------^ issue here
проблема заключается в том, что все стыки будут применены к столу, который был выбран в запросе первым, то есть в этом случае А.
я могу использовать фиктивный хак вроде:
session.query(C.fieldC, A.fieldA, B.fieldB).join(B).join(A).filter(C.fieldC == myvalue)
^------^ I don't need this column
Но, конечно, это не желательно.
Есть ли способ указать базовую таблицу, к которой будут привязаны все присоединения?
Sheesh ... Теперь я чувствую себя глупым, пропустив в документации 'select_from'. Спасибо! – mishik