2014-03-06 40 views
0

我有一个查询在两个表之间得到一个LEFT JOIN,并且所有事情都能够成功并可视化ListView中的数据。Android Java SQLite选择

但现在我需要从另一个表中获取数据,所以我应该结合这两个查询。我卡住了。你可以帮我吗?谢谢

String sql1 = "SELECT c._id, c.field1, c.field2, c.field3, SUM(g.field01), SUM(g.field02), g.field03 " + 
    "FROM Table1 c LEFT JOIN Table2 g ON (c.field1 = g.field03) GROUP BY c.field1"; 

String sql ="SELECT _id, riserva_1, riserva_2, SUM(riserva_3) FROM riserva GROUP BY riserva_1"; 
+1

您希望以何种方式进行组合?你所拥有的数据和最终结果的一个简单例子将有所帮助。 – NigelK

+0

字段'riserva_1'等于'(c.field1 = g.field03)' – user2976522

回答

0

我不知道我是否理解正确,但这里是我的解决方案。这将加入你首先与riserva表进行连接的结果,条件是你将它作为注释放入,然后通过table1的field01和table riserva的riserva_1进行分组。希望它有效。 注意:我没有添加所有的字段,你应该自己找出那部分,好吗?

String tables = String.format(
        "(%s LEFT JOIN %s ON %s.%s = %s.%s) INNER JOIN %s ON %s.%s = %s.%s", 
        Table1, 
        Table2, 
        Table1, 
        field1, 
        Table2, 
        field03, 
        riserva, 
        Table1, 
        field1, 
        riserva, 
        riserva_1); 
String columns[] = new String[] { String.format(
        "%s.%s, %s.*, SUM(%s.%s) AS %s", 
        riserva, 
        riserva_1, 
        Table1, 
        Table2, 
        field01, 
        sumefiles01) }; 
String groupBy = String.format("%s.%s, %s.%s", Table1, Table1, riserva, riserva_1); 

// you dont have where clause so ignore next 2 lines 
//String whereClause = String.format("%s.%s <> ?", Table1, Table1); 
//String whereParameters = new String[] { "" }; 

Cursor cursor = database.query(tables, columns, null, null, groupBy, null, null, null); 
cursor.moveToFirst(); 
if(!cursor.isAfterLast(){ 
// do something 
}