sql >> Databáze >  >> RDS >> Mysql

Vícenásobné spojení stolů v kolejnicích

Chcete-li přepsat dotaz SQL, který máte ve své otázce, myslím, že by to mělo být jako následující (ačkoli mám problém plně si vizualizovat vztahy vašeho modelu, takže je to trochu dohad):

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

...tak, že se joins metoda se stará o obě dvě spojení a také o WHERE klauzule a nakonec group zavolejte.

Další informace:

Pokud se ke stejnému modelu připojujete k více asociacím můžete je jednoduše uvést :

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

Pokud se připojujete k vnořeným tabulkám, můžete je uvést jako hash:

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

Vnořená přidružení, více úrovní:

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

Můžete také zřetězit volání ActiveRecord Query Interface takto:

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

Pokud vše ostatní selže, můžete vždy předat fragment SQL přímo do joins metoda jako odrazový můstek k tomu, abyste se dostali od vašeho pracovního dotazu k něčemu, co je více zaměřené 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. Hromadné vložení nebo aktualizace pomocí Hibernate?

  2. Mysql -- Posledních 30 dní

  3. Spusťte dotaz na SQL Server Analysis Services pomocí IronPython

  4. Jak vytisknout výsledek příkazu SELECT, který se provádí pomocí nativního dynamického SQL?