SQL, bei dem die verknüpfte Menge alle Werte enthalten muss, aber möglicherweise mehr enthält.
Bei einem Satz von Tabellen mit Beziehungen besteht das Ziel darin, Datensätze abzurufen aus einer Tabelle (Angeboten), die ein bestimmtes Array von Werten enthalten, aber auch zusätzliche Werte haben können.
In SQL kann dies durch eine Kombination von Joins erreicht werden, Gruppierung und die HAVING-Klausel. Die folgende Abfrage erledigt diese Aufgabe:
SELECT o.* FROM sports s JOIN offers_sports os ON os.sport_id = s.id JOIN offers o ON os.offer_id = o.id WHERE s.name IN ('Bodyboarding', 'Surfing') GROUP BY o.id -- !! HAVING count(*) = 2;
Überlegungen:
ActiveRecord-Implementierung:
def self.includes_sports(*sport_names) joins(:sports) .where(sports: { name: sport_names }) .group('offers.id') .having("count(*) = ?", sport_names.size) end
Mit dieser Methode können Sie nach Angeboten abfragen, die die angegebenen Sportnamen enthalten ActiveRecord:
offers = Offer.includes_sports("Bodyboarding", "Surfing")
Das obige ist der detaillierte Inhalt vonWie rufe ich mithilfe von SQL-Joins Datensätze ab, die alle Werte einer bestimmten Menge (aber möglicherweise noch mehr) enthalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!