Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wiele połączeń stołów w szynach

Aby przepisać zapytanie SQL, które masz w swoim pytaniu, myślę, że powinno wyglądać następująco (chociaż trudno mi w pełni zwizualizować relacje między Twoimi modelami, więc to trochę zgadywanie):

RagaContextApplicantsSong.
  joins(:raga_contest_applicants => [:raga_content_rounds], :contest_cat).
  group('raga_contest_rounds.contest_cat_id')

...tak, że joins metoda obsługuje oba sprzężenia, a także WHERE klauzula, po której na końcu następuje group zadzwoń.

Więcej informacji:

Jeśli dołączasz do wielu skojarzeń do tego samego modelu możesz je po prostu wymienić :

Post.joins(:category, :comments)
Returns all posts that have a category and at least one comment

Jeśli dołączasz do zagnieżdżonych tabel, możesz je umieścić w postaci skrótu:

Post.joins(:comments => :guest)
Returns all comments made by a guest

Asocjacje zagnieżdżone, wielopoziomowe:

Category.joins(:posts => [{:comments => :guest}, :tags])
Returns all posts with their comments where the post has at least one comment made by a guest

Możesz także połączyć wywołania interfejsu ActiveRecord Query Interface w taki sposób, że:

Post.joins(:category, :comments)
...produces the same SQL as...
Post.joins(:category).joins(:comments)

Jeśli wszystko inne zawiedzie, zawsze możesz przekazać fragment SQL bezpośrednio do joins metoda jako odskocznię do przejścia od zapytania roboczego do czegoś bardziej skoncentrowanego na ARQI

   Client.joins('LEFT OUTER JOIN addresses ON addresses.client_id = clients.id')
=> SELECT clients.* FROM clients LEFT OUTER JOIN addresses ON addresses.client_id = clients.id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaimportować plik Excela do bazy danych MySQL

  2. Równoważna klauzula zwracająca Mysql

  3. Jak liczyć unikalnych użytkowników mojej witryny?

  4. JSON_PRETTY() – Formatuj dokumenty JSON dla łatwiejszej czytelności w MySQL

  5. MySQL łączy się z klauzulą ​​where