Я новичок в AlaSQL:
alasql('CREATE TABLE cnames(domain STRING, cname STRING)');
alasql('CREATE TABLE domains(domain STRING, ip_addr STRING)');
alasql('INSERT INTO domains VALUES ("fred.com.au","192.168.0.1")');
alasql('INSERT INTO cnames VALUES ("www.fred.com.au","fred.com.au")');
alasql('INSERT INTO cnames VALUES ("mail.fred.com.au","www.fred.com.au")');
alasql.fn.getCname = function(domainName) {
console.log('domainName ', domainName);
return alasql('SELECT cname FROM cnames WHERE domain = ?',[domainName]);
}
var res = alasql('SELECT * FROM cnames WHERE getCname("www.fred.com.au")');
document.getElementById('res').textContent = JSON.stringify(res);
У меня есть JSFiddle из вышеперечисленного: https://jsfiddle.net/u4drqxaw/
У меня возникли следующие проблемы:
1) Я понимаю, что я делаю что-то не так, поскольку моя getCname
функция вызывается дважды из-за моего SELECT * FROM cnames WHERE getCname("www.fred.com.au")
В alaSQL, как я могу просто вызвать мою функцию alasql.fn.getCname
с параметром,то есть что-то вроде:
var res = alasql('getCname("www.fred.com.au")');
2) Как только у меня есть решение для моего Q1, как я могу ссылаться на параметр, переданный в функцию, чтобы я мог использовать его в запросе, то есть [domainName]
?
Конечным результатом является то, что я хочу иметь возможность вызывать мою пользовательскую функцию alaSQL с параметром www.fred.com.au
, которая, в свою очередь, должна просто вернуть мне одну запись из моей таблицы cnames для этого значения cnames.domain.