Mysql
 sql >> база данни >  >> RDS >> Mysql

Множество маси се съединяват в релси

За да пренапишете SQL заявката, която имате във вашия въпрос, мисля, че трябва да бъде както следва (въпреки че ми е трудно да визуализирам напълно вашите модели отношения, така че това е малко предположение):

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

...така че joins методът се грижи както за двете съединения, така и за WHERE клауза, последвана накрая от group обадете се.

Повече за справка:

Ако присъединявате няколко асоциации към един и същ модел можете просто да ги изброите :

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

Ако се присъединявате към вложени таблици, можете да ги изброите като хеш:

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

Вложени асоциации, много нива:

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

Можете също да верижите повиквания на интерфейса на заявка ActiveRecord, така че:

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

Ако всичко друго не успее, винаги можете да прехвърлите SQL фрагмент директно в joins метод като стъпка към преминаване от вашата работна заявка към нещо по-ориентирано на 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. Актуализирайте стойност на колона, като замените част от низ

  2. Намиране на най-високите n стойности на всяка група в MySQL

  3. MySQL САМО IN() еквивалентна клауза

  4. Как да създадете архитектура на точка във времето в MySQL

  5. Spring Boot JPA:Подаване на множество стойности за един и същ параметър (JPQL)