fusiontable запрос, где

Есть ли способ динамически генерировать условие "где" на основе пользовательского ввода. У меня есть поле выбора с параметром ">", "‹", "равно", "начинается с", "заканчивается". должен быть сгенерирован и запрос должен быть выполнен. Пожалуйста, помогите мне. Мне нужны примеры. так как в моей таблице около 80 столбцов, я не могу использовать цикл if else.

function querymap()


{
var querypass=document.getElementById('query-pass').value.replace(/'/g, "\\'");
 if(querypass=='hhSanitHouseType')
   {
     var operator=document.getElementById('operatorstring').value.replace(/'/g, "\\'");
     if(operator=='>')
        { 
          var textvalue=document.getElementById("text-value").value.replace(/'/g, "\\'");
          layer.setQuery("SELECT 'geometry',hhSanitHouseType FROM " + tableid + " WHERE 'hhSanitHouseType' > '" + textvalue + "'");


        }
     }
   else
   {
   alert("false");
   }
}

person 7783    schedule 10.04.2012    source источник


Ответы (1)


Возможно, вы можете проверить этот пример, особенно функцию generateWhere(columnName, low, high).

Вам не нужно использовать if/else для вашего оператора, просто проверьте правильность ввода (т.е. что оператор является одним из «>», «‹», «равно», «начинается с», «заканчивается») а затем передать его прямо на ваш запрос, что-то вроде этого

 var operator = ...;
 var textvalue = ...;
 layer.setQuery("SELECT 'geometry',hhSanitHouseType FROM " + tableid + " WHERE 'hhSanitHouseType'" + operator + " '" + textvalue + "'");
person Odi    schedule 10.04.2012
comment
Предположим, у меня есть три переменных, таких как «имя столбца», «оператор», «текстовое значение». Можно ли получить имя столбца в качестве переменной и передать его в запрос. Пожалуйста, скажите мне, как это сделать. - person 7783; 11.04.2012
comment
я не хочу указывать, что hhSanitHouseType также в запросе. Он также должен быть напрямую получен из еще одной переменной с именем «имя столбца». - person 7783; 11.04.2012
comment
@user1225902 user1225902 Да, конечно, это похоже на другие переменные, просто получите значение из формы с чем-то вроде var columnname=document.getElementById("columnname").value, а затем используйте его в своем запросе: layer.setQuery("SELECT 'geometry'," + columnname + " FROM " + tableid + " WHERE " + columnname + " " + operator + " '" + textvalue + "'"); - person Odi; 11.04.2012
comment
спасибо... я ожидал только этого... я понял... это идеально подходит для моего кода... - person 7783; 11.04.2012
comment
При этом я должен добавить условие «и». - person 7783; 12.04.2012
comment
var имя_деревни=document.getElementById(имя_деревни).значение; var имя_столбца=document.getElementById(имя_столбца).значение; layer.setQuery(SELECT 'geometry', + имя столбца + FROM + tableid + WHERE + имя столбца + + оператор + ' + textvalue + ' + and+VillageName='madurai'); это правильный код - person 7783; 12.04.2012