So habe ich seit Stunden mit dieser Abfrage kämpfen und ich weiß wirklich nicht, wie ich das Ergebnis, das ich brauche. Vielleicht haben einige von Ihnen eine Ahnung?Verschachtelte Join-Abfrage, nur letzte Zeile der dritten Tabelle
Hier ist meine Frage bisher:
items = Item.joins(projects: :connexions)
.where.not(connexions: []).where("connexions.updated_at > ?", 3.years.ago)
Es funktioniert gut. Aber was ich brauche sind Artikel, wo nur letzte Connexion "updated_at" auf Projekt sind größer als 3 Jahren.
Grundsätzlich würde Ich mag eine items.projects.connexions.last.where etc tun ..
Haben Sie ein paar Tipps?
Thanks :)
EDIT: spezifischere über meine „Verbindungen“ Spezifikation zu sein, muss ich seit 3 Jahren ohne Verbindungen Datensätze mit Projekten abgerufen werden. Deshalb benutze ich das updated_at Feld!
EDIT 2: Ich habe es geschafft, es mit jvillian Antwort arbeiten zu lassen.
items = Item.limit(10).joins(:projects).where(projects: {id: Project.joins(:connexions).where(
connexions: { id: Connexion.order(updated_at: :desc).limit(1).where("updated_at < ?", 3.years.ago)}
)}
)
Vielen Dank!
Danke für deine Antwort, aber es funktioniert nicht für das, was ich will :(Ich muss nur Projekte abrufen, wo es in den letzten 3 Jahren absolut keine Verbindungen updated_at gibt. Aber ich werde das in meiner Frage hinzufügen, um es klarer zu machen! – Vanessa
Sorry, verpasste das ** letzte ** Verbindungsbit Ich werde versuchen, später zurückzukommen, wenn niemand richtig geantwortet hat – jvillian
Eigentlich arbeite ich von dem, was du mir gegeben hast und ich habe es endlich geschafft, dank dir damit zu arbeiten line: connexions: {id: Connexion.order (aktualisiert:: desc) .limit (1) .where ("updated_at ", 3.years.ago) Aber ich stimme zu, es ist ... nicht so hübsch: p – Vanessa