Ich habe zwei Tabellen, Foos und Bars. Bars gehören zu Foos und Foos haben mehrere Bars (via ActiveRecord). Ich möchte ein foo finden, das Bars genau (und nur) eine bestimmte Liste von Bar-Namen hat.SQL-Abfrage für mehrere Übereinstimmungen in derselben Spalte der zugehörigen Tabelle
z. (Entschuldigen Sie bitte irgendeine Pseudo-Code)
bars_list = ["A", "B"]
foo = find_foo(bars_list)
foo.bars.map(&:name) = ["A", "B"]
Suche foo nicht notwendigerweise streng eine Funktion sein müssen. Es kann eine SQL-Abfrage sein, um passende foo ids oder sehr effiziente ActiveRecord-Funktionen zurückzugeben. Vielen Dank!
Was haben Sie bisher versucht? – dmfay
Ich benutzte eine SQL-Abfrage mit einem INNEREN JOIN mit WHERE EXISTS ... bar.name =? ... UND EXISTS ... bar.name =? ... Aber für foos, bei denen sowohl bar.name = "A" als auch bar.name = "B" existierten, wurden keine Übereinstimmungen gefunden. Es hat interessanterweise alle richtigen Fosos zurückgegeben, wenn ich EXISTS verwendet habe ... ODER EXISTS ... aber ich brauche sie, um beide zu existieren. –