我需要从两个表中检索值并在recyclerview中显示它到目前为止我已尝试过连接但结果似乎不像我预期的那样。现在让我详细发布我的问题我有两个表即呼叫和旅行这里的数据如下:
致电表;
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
我的预期结果应该是这样的:
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 ;
没有得到结果,任何人都可以为此发布解决方案。
答案 0 :(得分:0)
要执行此操作,您需要尝试加入对于表格,此处我已修改您的查询以使用 INNER JOIN 功能,该功能将返回您想要的结果。< / p>
"SELECT * FROM " + VisitModel.Visit_Table + " as v INNER JOIN" + VisitModel.Visit_TravelTable + " as t where " +v.Visit_IncidentID + " = "+ id + " and " + v.Visit_IncidentID + " = " + id ;
答案 1 :(得分: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
希望这有帮助
答案 2 :(得分:0)
在我看来,您不希望加入表(查看您的预期结果),但希望两个表中的每一行都有一个单独的行。在这种情况下,您正在寻找 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
这应该会返回您的预期结果。