私が構築しているRails3アプリには、次の3つのクラスがあります。
class Instrument < ActiveRecord::Base
has_many :parts
has_many :pieces, through: :parts
end
class Part < ActiveRecord::Base
belongs_to :instrument
belongs_to :piece
end
class Piece < ActiveRecord::Base
has_many :parts
has_many :instruments, through: :parts
end
関連する楽器が任意の楽器セットのサブセットであるすべてのピースを選択する方法を探しています。
混乱を避けるために、例を挙げます。
- 楽器付きのピース(id:1):[1,2,3]、
- [1,2,3,4]のPiece(id:2)
- ピース(id:3)と[1,3,4]
- ピース(id:4)と[2]、
somequery(1,2,3,4)
somequery(1,2,3)
4つのピースすべて、 1と4somequery(1,3,4)
のみ、ピース3と4のみを生成する必要がありsomequery(2)
ます。
私はrails3.2を使用しており、railsのソリューションは素晴らしいですが、sqlも問題なく、できればpostgresですが、これに対するmysql固有のソリューションがあれば、それも問題ありません。さらに、私は比較的小さなデータベース(1000以上のピース、50の機器、15.000のパーツ)を使用していないため、クエリの効率が最適でない場合でも問題はありません。
最後の免責事項として、私はRuby / Railsでの自分の道を知っていますが、SQLではかなり環境に配慮しています。
助けてくれてありがとう!