class Event < ActiveRecord::Base
has_many :lineups
has_many :artists, through: :lineups
end
class Lineup < ActiveRecord::Base
belongs_to :event
belongs_to :artist
end
class Artist < ActiveRecord::Base
has_many :events, through: :lineups
has_many :lineups
end
Jak znaleźć wszystkie eventy gdzie graja artysci artist1 i artist2 ? (Artist ma atrybut name)
Ale to chyba nie jest zwykly join.
Bo mogę zrobić Event.joins(:artists) ale to dostaje dla kazdego artysty jeden rekord.
Czyli np.
Jezeli mam Event1 w ktorym graja Artist1, Artist2, Artist3 i Event2 w ktorym biora udzial Artist2,Artist3 to po joinie mam:
Ble, chyba mnie to przerasta, juz drugi dzien nad tym glowkuje :(,SO też nie pomaga :(.
Dzięki za diagramy, o join juz przeczytalem, defaultowo jest INNER JOIN.
Teoretycznie zrobilbym to tak, dla takich danych e1.artists == [a1, a2, a3] e2.artists == [a2,a3]
Robie tego defaultowego INNER JOINA
EVENT | ARTIST
e1, a1
e1, a2
e1, a3
e2, a2
e2, a3
I teraz chcialbym imprezy powiedzmy z artystami a1 i a2
Czyli teraz wystarczy wybrac te imprezy ktore maja po 2 wyniki - tyle ilu artystow. Tylko znowu teraz to pewnie dojdzie do tego jakies group i having count > ilu_artystow i nie bardzo mi to wychodzi