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