为什么SQLite JOIN不起作用?

时间:2013-01-18 17:42:17

标签: sqlite cordova web-sql

我遇到以下功能问题。它只是我认为的加入。通过使用sql语句“SELECT * FROM pkw”,我得到了结果。两个表都填充了数据。 你看到了这个错误吗?

function gotoauftrag(id) {
    db = window.sqlitePlugin.openDatabase(shortName, version, displayName,maxSize);
    var list = '';
    var sql = "SELECT DISTINCT p.name FROM pkw p INNER JOIN ta_pkw tp ON tp.pkw_id = p.pkw_id AND tp.ta_id = ?";
    db.transaction(function (tx) {
                   tx.executeSql(sql, [id], function (tx, results) {
                                 if (results.rows.length > 0) {
                                 document.getElementById('auftrag_pkw').innerHTML = '';
                                 for (i = 0; i < results.rows.length; i++) {
                                    r = results.rows.item(i);
                                    list = '<li>'+r['name']+'<span class="ui-li-count">1</span></li>';
                                 document.getElementById('auftrag_pkw').innerHTML += list;
                                 $('#auftrag_pkw').listview('refresh');
                                 }
                                 }
                                 });
                   });
$('#auftrag_pkw').listview('refresh');
}

1 个答案:

答案 0 :(得分:0)

我不相信你能够绑定到JOIN谓词。请尝试使用WHERE子句。

SELECT DISTINCT 
  p.name 
FROM pkw p 
INNER JOIN ta_pkw tp 
  ON tp.pkw_id = p.pkw_id 
WHERE
  tp.ta_id = ?

此外,您可能应该在加入之前进行ta_id选择。以上内容将在pkw_id上进行自然加入,然后它会根据ta_id过滤结果。