ruby - strange sql query implementation joining tables -


i need sql query. let me describe scenario

i have 3 tables, dispensaries, goods , products.

products records has 2 fk, good_id , dispensary_id let me access dispensaries goods through products. goods has attribute called name

now situation wanna resolve following:

for provided set of goods names ([good_name1, good_name2, etc]) want dispensaries has goods in array ( goods matches names ).

let me add example:

 good1 names  good_1 belongs dispensary1  good1 names  good_1 belongs dispensary2  good2 names  good_2 belongs dispensary1 

so need create sql query provided array of goods [good1, good2] returns dispesary1

thanks in advance.

one way achieve use intersect, generating set each of clauses — means have unfold list n queries, 1 each item:

select dispensary.id, dispensary.name products inner join goods on goods.id = products.goods_id inner join dispensary on dispensary.id = products.dispensary_id goods.name = 'good_1' intersect select dispensary.id, dispensary.name products inner join goods on goods.id = products.goods_id inner join dispensary on dispensary.id = products.dispensary_id goods.name = 'good_2' intersect select dispensary.id, dispensary.name products inner join goods on goods.id = products.goods_id inner join dispensary on dispensary.id = products.dispensary_id goods.name = 'good_3' 

that way, you'll results in sets.