Brauche Hilfe Aufbau eines SQLAlchemy-Abfrage + Unterabfrage
Dies ist die SQL-brauche ich SQLAlchemy zu generieren, die über seine ORM.
SELECT
*
FROM
notes
WHERE
notes.student_id == {student_id}
OR
notes.student_id IN (
SELECT
*
FROM
peers
WHERE
peers.student_id == {student_id}
AND
peers.date_peer_saved >= notes.date_note_saved
)
SQL ist ungetestet. Ich schrieb es, um die demo, was ich brauche, SQLAlchemy zu tun.
Grundsätzlich der angemeldete Schüler sollten eine Liste der gespeicherten notes
. Den nur notes
die Schüler sollten sehen, jedoch sind solche Mitteilungen, die von sich selbst oder diejenigen, geschrieben von einem Ihrer Kollegen - Aber nur die Kollegen Sie "friended" nach dem Hinweis gerettet hatte.
Diese Weise, ein student nicht, siehe Anmerkungen geschrieben von einem anderen Schüler, bevor Sie wurden zu peers.
Bin ich Schwierigkeiten haben, diese zu führen in SQLAlchemy ist ORM, jedoch. Keine Hilfe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grundsätzlich kann man die
.subquery()
Methode, um eine sub-Abfrage, können Sie Sie in eine andere bedingt, wie die.Etwas wie
Dann
(auch ungetestet und funktionieren möglicherweise nicht mit diesem eigentlichen Abfrage, aber nur, um Ihnen die Idee).
Dies ist wahrscheinlich, weil es Probleme mit der Abfrage.
Sieht es aus wie Sie wollen, um zu sehen, alle Noten für einen Schüler-id, wo
date_peer_saved
ist >=date_note_saved
.Das problem ist, dass die Tische
notes
undpeers
wohl Viele zu-Eins-Beziehung mitstudent
. Was dies bedeutet ist, dass Sie versuchen, Datensätze filtern vonpeers
wo es viele Hinweise und viele Kollegen zu vergleichen.Sie müssen sich alle drei Tabellen in einer Weise, dass jeder Satz von
peers
bezieht sich auf einen einzelnen Datensatz vonnotes
. Wenn dies nicht auf Sie zutreffen, dann müssen Sie überdenken, was Sie wirklich wollen.Vielleicht möchten Sie zum filtern der MAX date_peer_saved >= MAX date_note_saved?