        
      elsif @universal_implications and !property_values_selected and @p_all_or_any != "cross"

        ActiveRecord::Base.connection.execute("CREATE INDEX i_#{unique_table_name} ON #{unique_table_name} (language, property(10))")

        if params["universal_implications_options"] == "universal_implications_both"
          ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name2} " + 
                                             "SELECT DISTINCT L1.property AS prop1, L1.value AS val1, L2.property AS prop2, L2.value AS val2, L1.language " + 
                                             "FROM #{unique_table_name} L1, #{unique_table_name} L2 " +
                                             "WHERE L1.language = L2.language " + 
                                             "AND L1.property != L2.property " + 
                                             "AND L1.value != \"NA\" " + 
                                             "AND L1.property != \"latlong\" and L1.property != \"ISO 639-3 Code\" and L2.property != \"latlong\" and L2.property != \"ISO 639-3 Code\"")
        elsif params["universal_implications_options"] == "universal_implications_consequent"
           ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name2} " + 
                                              "SELECT DISTINCT L1.property AS prop1, L1.value AS val1, L2.property AS prop2, L2.value AS val2, L1.language " + 
                                              "FROM languages L1, #{unique_table_name} L2 " +
                                              "WHERE L1.language = L2.language " + 
                                              "AND L1.property != L2.property " + 
                                              "AND L1.value != \"NA\" " + 
                                              "AND L1.property != \"latlong\" and L1.property != \"ISO 639-3 Code\" and L2.property != \"latlong\" and L2.property != \"ISO 639-3 Code\"")
        elsif params["universal_implications_options"] == "universal_implications_antecedent"
           ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name2} " + 
                                              "SELECT DISTINCT L1.property AS prop1, L1.value AS val1, L2.property AS prop2, L2.value AS val2, L1.language " + 
                                              "FROM #{unique_table_name} L1, languages L2 " +
                                              "WHERE L1.language = L2.language " + 
                                              "AND L1.property != L2.property " + 
                                              "AND L1.value != \"NA\" " + 
                                              "AND L1.property != \"latlong\" and L1.property != \"ISO 639-3 Code\" and L2.property != \"latlong\" and L2.property != \"ISO 639-3 Code\"")
        end


        ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name3} " +
                                              "select count(language) AS num_lang, count(distinct val2) as c2, prop1, val1, prop2 " + 
                                              "FROM #{unique_table_name2} " + 
                                              "GROUP BY prop1, val1, prop2")

        ActiveRecord::Base.connection.execute("CREATE INDEX i_#{unique_table_name3} ON #{unique_table_name3} (prop1(10), val1, prop2(10), c2, num_lang)")

        universal_results = Language.find_by_sql("SELECT DISTINCT #{unique_table_name2}.prop1, #{unique_table_name2}.val1, #{unique_table_name2}.prop2, #{unique_table_name2}.val2, #{unique_table_name3}.num_lang " + 
                                           "FROM #{unique_table_name2}, #{unique_table_name3} " +
                                           "WHERE #{unique_table_name2}.prop1 = #{unique_table_name3}.prop1 " + 
                                           "AND #{unique_table_name2}.val1 = #{unique_table_name3}.val1 " + 
                                           "AND #{unique_table_name2}.prop2 = #{unique_table_name3}.prop2 " + 
                                           "AND #{unique_table_name3}.c2 = 1 " +
                                           "ORDER BY num_lang DESC, prop1, val1, prop2")

        universal_results.each do |result|

          new_result = UniversalResult.new(result.prop1, result.val1, result.prop2, result.val2, result.num_lang)
          tmp_results << new_result
        end


        ActiveRecord::Base.connection.execute("DROP TABLE #{unique_table_name}")
        ActiveRecord::Base.connection.execute("DROP TABLE #{unique_table_name2}")
        ActiveRecord::Base.connection.execute("DROP TABLE #{unique_table_name3}")


      elsif @double_universals && !property_values_selected
          if params["universal_implications_options"] == "universal_implications_both"
            ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name2} " + 
                                              "SELECT DISTINCT L1.property AS prop1, L1.value AS val1, L2.property AS prop2, L2.value AS val2, L3.property AS prop3, L3.value AS val3, L1.language " + 
                                              "FROM #{unique_table_name} L1, #{unique_table_name} L2, #{unique_table_name} L3 " +
                                              "WHERE L1.language = L2.language AND L1.language = L3.language " + 
                                              "AND L1.property != L2.property AND L1.property != L3.property AND L2.property != L3.property " + 
                                              "AND L1.value != \"NA\" AND L2.value != \"NA\" " + 
                                              "AND L1.property != \"latlong\" and L1.property != \"ISO 639-3 Code\" and L2.property != \"latlong\" and L2.property != \"ISO 639-3 Code\" " + 
                                              "AND L3.property != \"latlong\" and L3.property != \"ISO 639-3 Code\"")
          elsif params["universal_implications_options"] == "universal_implications_consequent"
            ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name2} " + 
                                              "SELECT DISTINCT L1.property AS prop1, L1.value AS val1, L2.property AS prop2, L2.value AS val2, L3.property AS prop3, L3.value AS val3, L1.language " + 
                                              "FROM languages L1, languages L2, #{unique_table_name} L3 " +
                                              "WHERE L1.language = L2.language AND L1.language = L3.language " + 
                                              "AND L1.property != L2.property AND L1.property != L3.property AND L2.property != L3.property " + 
                                              "AND L1.value != \"NA\" AND L2.value != \"NA\" " + 
                                              "AND L1.property != \"latlong\" and L1.property != \"ISO 639-3 Code\" and L2.property != \"latlong\" and L2.property != \"ISO 639-3 Code\" " + 
                                              "AND L3.property != \"latlong\" and L3.property != \"ISO 639-3 Code\"")
          elsif params["universal_implications_options"] == "universal_implications_antecedent"
            ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name2} " + 
                                              "SELECT DISTINCT L1.property AS prop1, L1.value AS val1, L2.property AS prop2, L2.value AS val2, L3.property AS prop3, L3.value AS val3, L1.language " + 
                                              "FROM #{unique_table_name} L1, #{unique_table_name} L2, languages L3 " +
                                              "WHERE L1.language = L2.language AND L1.language = L3.language " + 
                                              "AND L1.property != L2.property AND L1.property != L3.property AND L2.property != L3.property " + 
                                              "AND L1.value != \"NA\" AND L2.value != \"NA\" " + 
                                              "AND L1.property != \"latlong\" and L1.property != \"ISO 639-3 Code\" and L2.property != \"latlong\" and L2.property != \"ISO 639-3 Code\" " + 
                                              "AND L3.property != \"latlong\" and L3.property != \"ISO 639-3 Code\"")
          end          

            
          ActiveRecord::Base.connection.execute("CREATE INDEX #{unique_table_name2}ix " +
                                                "ON #{unique_table_name2} (prop1(100), val1(100), prop2(100))")

          ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name3} " +
                                               "select count(language) AS num_lang, count(distinct val3) as c2, prop1, val1, prop2, val2, prop3 " + 
                                               "FROM #{unique_table_name2} " + 
                                               "GROUP BY prop1, val1, prop2, val2, prop3")
                                               
          ActiveRecord::Base.connection.execute("CREATE TABLE #{unique_table_name4} " +
                                              "select * FROM #{unique_table_name3} " + 
                                              "where c2 = 1")
          
          ActiveRecord::Base.connection.execute("CREATE INDEX #{unique_table_name4}ix " +
                                               "ON #{unique_table_name4} (prop1(100), val1(100), prop2(100))")

          universal_results = Language.find_by_sql("SELECT DISTINCT #{unique_table_name2}.prop1, #{unique_table_name2}.val1, #{unique_table_name2}.prop2, #{unique_table_name2}.val2, " +
                                            "#{unique_table_name2}.prop3, #{unique_table_name2}.val3 " +
                                            "FROM #{unique_table_name2}, #{unique_table_name4} " +
                                            "WHERE #{unique_table_name2}.prop1 = #{unique_table_name4}.prop1 " + 
                                            "AND #{unique_table_name2}.val1 = #{unique_table_name4}.val1 " + 
                                            "AND #{unique_table_name2}.prop2 = #{unique_table_name4}.prop2 " +
                                            "AND #{unique_table_name2}.val2 = #{unique_table_name4}.val2 " +
                                            "AND #{unique_table_name2}.prop3 = #{unique_table_name4}.prop3 " + 
                                            "ORDER BY num_lang DESC, prop1, val1, prop2, val2, prop3 LIMIT 50")


           universal_results.each do |result|
             new_result = DoubleUniversal.new(result.prop1, result.val1, result.prop2, result.val2, result.prop3, result.val3)
             languages = Language.find_by_sql("SELECT DISTINCT language FROM #{unique_table_name2} " +
                                              "WHERE prop1 = \"#{result.prop1}\" and val1 = \"#{result.val1}\" " + 
                                              "AND prop2 = \"#{result.prop2}\" and val2 = \"#{result.val2}\" AND prop3 = \"#{result.prop3}\" and val3 = \"#{result.val3}\"")
             languages.each do |language|
               new_result.newLanguage(language)
             end
             tmp_results << new_result
           end

           ActiveRecord::Base.connection.execute("DROP INDEX #{unique_table_name4}ix ON #{unique_table_name4}")
           

      end
      
