# File lib/flexirecord.rb, line 745
745:       def select_by_value_set(keys, set_of_values, sql_snippet=nil, *arguments)
746:         flattened_values = set_of_values.to_ary.flatten
747:         if flattened_values.empty?
748:           return sql(nil)
749:         else
750:           if sql_snippet
751:             return sql(
752:               'SELECT ' << FlexiRecord::DefaultTableAlias << '.* FROM (' <<
753:               'SELECT * FROM ' << table << ' WHERE (' << keys.collect { |key| '"' << key << '"' }.join(', ') << ') ' << 'IN (' << set_of_values.collect { |values| '(' << values.collect { |value| '$' }.join(', ') << ')' }.join(', ') << ')' <<
754:               ') AS ' << FlexiRecord::DefaultTableAlias << ' ' << sql_snippet.to_s,
755:               *(flattened_values + arguments)
756:             )
757:           else
758:             return sql(
759:               'SELECT * FROM ' << table << ' WHERE (' << keys.collect { |key| '"' << key << '"' }.join(', ') << ') ' << 'IN (' << set_of_values.collect { |values| '(' << values.collect { |value| '$' }.join(', ') << ')' }.join(', ') << ')',
760:               *(flattened_values + arguments)
761:             )
762:           end
763:         end
764:       end