2016-12-14 67 views
0

我需要从两个表中检索值并将其显示在recyclerview中,到目前为止,我尝试了连接,但结果似乎并不如我预期的那样。现在让我发表我的问题详细我有两个表,即呼叫和旅行这里是数据如下:如何使用sqlite android从两个表中检索值?

调用表;

PK_ID INC_ID DES CHECKIN CHECKOUT FLAG 
----- ------ --- ------- -------- ---- 
1  2  Test 12:20 14:50  1 

旅行表:

PK_ID INC_ID LAT LONG FLAG 
----- ------ --- ---- ---- 
    1  2  11.4 11.5 2 

我预期的结果shoulbe是这样的:

Caal_PK_ID Travel_PK_Id INC_ID Checkin Checkout FLAG LAT LONG 
---------- ------------ ------ ------- -------- ---- --- ---- 
    1    0   2  12:20  14:50 1  null null 

    0    1   2  null  null 2  11.4 11.5 

如何生产用联接正在逐渐合并后的结果,我不想要这个想要的结果我需要这样的结果我如何查询这个让我发布我的东西到目前为止我试过

String visitquery= "SELECT * FROM " + VisitModel.Visit_Table + " ," + VisitModel.Visit_TravelTable + " where " +VisitModel.Visit_IncidentID + " = "+ id + " and " + VisitModel.Visit_IncidentID + " = " + id ; 

没有得到的结果在任何人都可以请发布anysolution为此。

回答

0

要做到这一点,你需要尝试JOIN对于表格,在这里我已经修改您的查询中使用INNER JOIN功能,将返回你想要的结果。

"SELECT * FROM " + VisitModel.Visit_Table + " as v INNER JOIN" + VisitModel.Visit_TravelTable + " as t where " +v.Visit_IncidentID + " = "+ id + " and " + v.Visit_IncidentID + " = " + id ; 
0

你应该组成一个简单的SQLite加入:

private final String MY_QUERY = "SELECT call.PK_ID, 
            travel.PK_Id, 
            call.INC_ID, 
            travel.INC_ID, 
            call.CHECKIN, 
            call.CHECKOUT, 
            call.FLAG, 
            travel.FLAG, 
            travel.LAT , 
            travel.LONG 
           FROM table_call call 
           INNER JOIN table_travel travel ON call.INC_ID=travel.INC_ID 
           WHERE call.INC_ID =?; 
//I used your columns, you can use any column you'd like 

db.rawQuery(MY_QUERY, new String[]{String.valueOf(myIncidentId)}); 

注:如果您检索所有列,你必须检查你的光标正确地选择所有的行,所以你必须要创建一个模型,或者用相同的游标初始化两个实体。

这个查询将返回此架构行:

call.PK_ID travel.PK_ID call.INC_ID travel.INC_ID call.CHECKIN call.CHECKOUT call.FLAG travel.FLAG trvel.LAT travel.LONG 
---------- -----------  ---------- ------------- ------------ ------------- --------- ----------- ---------  ----------- 
    1    1    2    2    12:20   14:50    1    2   11.4   11.5 

希望这有助于

+0

这个查询将提供如我所料的 –

+0

@ M.Yogeshwaran我添加了模式查询将返回数据,我认为它也更简单,你也可以检查包含所有数据的单行。这将为每个链接对返回一行,查询将找到 –

+0

bro,但我需要将所有行都不作为单行返回。我需要它的目的是需要显示在recyclerview –

0

它看起来像你对我不希望JOIN表(看你的预期结果)做,但希望两个表中的每行都有一个单独的行。在这种情况下,你正在寻找一个UNION查询

试试这个:

SELECT PK_ID AS CALL_PK_ID, Null as TRAVEL_PK_ID, INC_ID, CHECKIN, CHECKOUT, FLAG, Null as Lat, Null As Long 
From VisitModel.Visit_TravelTable 
UNION ALL 
SELECT NULL AS CALL_PK_ID, PK_ID AS TRAVEL_PK_ID, INC_ID, Null As CHECKIN, NULL AS CHECKOUT, FLAG, Lat, Long 
FROM VisitModel.Visit_TravelTable 

应该返回您预期的结果。

相关问题