SELECT SKU_ATTR_VALUE.*,Product.ProductID FROM SKU_ATTR_VALUE INNER JOIN SKU ON SKU_ATTR_VALUE.SkuID=SKU.SkuID INNER JOIN Product ON SKU.ProductID=Product.ProductID WHERE Product.ProductID=?
很简单.我可以在sqlite数据库浏览器中运行它,取代?用1,它返回18行,这正是它应该做的.只有18行符合条件.但是当我在Java中运行它并传入值1时,我得到了817个值.这不是笛卡尔式的加入; SKU_ATTR_VALUE中有864个可能的值.我得到的结果对于Product中的每条记录至少有一个值…所以我真的无法想象发生了什么.
我一直在看这个,我完全被难过了.谷歌搜索似乎没有任何改变.是的,我确信我正在使用与sqlite浏览器相同的sqlite数据库运行Java查询.
sqlite jar的名称是sqlitejdbc-v056.jar.它基于sqlite 3.6.14.2.
以下是设置查询的Java代码:
String sql = "SELECT SKU_ATTR_VALUE.*,Product.ProductID " + "FROM SKU_ATTR_VALUE " + " INNER JOIN SKU ON SKU_ATTR_VALUE.SkuID=SKU.SkuID " + " INNER JOIN Product ON SKU.ProductID=Product.ProductID " + "WHERE Product.ProductID=?";ps = conn.prepareStatement(sql);ps.setInt(1,productID);ResultSet rs = ps.executequery();解决方法 根据 this document部分“5.0联接”:您可以尝试重写您的查询,如下所示:
SELECT SKU_ATTR_VALUE.*,Product.ProductID FROM Product,SKU,SKU_ATTR_VALUEWHERE Product.ProductID=?AND SKU.ProductID=Product.ProductID AND SKU_ATTR_VALUE.SkuID=SKU.SkuID总结
以上是内存溢出为你收集整理的SQLite / JDBC内连接全部内容,希望文章能够帮你解决SQLite / JDBC内连接所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)