2017-12-20 5 views
2

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!

Antwort

0

Diese kann Arbeit für Sie (nicht getestet)

Item.where.not(id: 
    Item.joins(:projects).where(
    projects: {id: Project.joins(:connections).where(
     connections: {id: Connection.where("updated_at <= ?", 3.years.ago)} 
    )} 
) 
) 

Es ist ziemlich Schinken fisted (wenn es funktioniert auch).

+0

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

+0

Sorry, verpasste das ** letzte ** Verbindungsbit Ich werde versuchen, später zurückzukommen, wenn niemand richtig geantwortet hat – jvillian

+2

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 Vanessa

Verwandte Themen