【问题标题】:How to join two tables in sqlite android?如何在sqlite android中加入两个表?
【发布时间】:2017-02-26 00:24:46
【问题描述】:

我有两张表,一张是旅行,另一张是在这两张表中调用我有一个基于该 id 的公共字段事件 id 需要获取两个表值我该怎么做。现在让我详细解释一下我的问题

这是我的旅行表:

ID  INCIDENT_ID Lat  Long   Time
--  ----------- ---  ----   -----
1     2         13.2 13.5   13456 

这是我的调用表:

ID  INCIDENT_ID  DESC   START    END 
--  -----------  ----   -----    ---
1       2         test   23      33

现在如何加入这两个表到目前为止我尝试的是查询:

  String visitquery = "SELECT   " +  VisitModel.INCIDENT_ID + ","  +  VisitModel.DESC +  " ,"  + VisitModel.Visit_START + " ," + VisitModel.Visit_END  + " , "+ VisitModel.Visit_TRAVELAT  +  " , " +  VisitModel.Visit_TRAVEL_LONG + " FROM " + VisitModel.CALL_TABLE + " LEFT OUTTER JOIN " + VisitModel.Visit_TravelTable
                + " ON " + VisitModel.Visit_IncidentID  + " = " + VisitModel.Visit_TravelIncidentID
                + " WHERE " + VisitModel.Visit_IncidentID + " = " +  id;

我没有从旅行表中得到结果如何实现这一点还有其他方法吗。

【问题讨论】:

  • 您要加入的字段名称在两个表中都匹配,因此它不知道您指的是哪个表中的哪个字段。看看visitquery的内容,你就明白我的意思了。
  • @VladMatvienko 都有不同的名字
  • 当遇到像这个启动 sqlite3 工具这样的问题时,检查你的 select 语句,完成后返回你的 java 编码
  • 你错了。您展示了在第一个表中它是INCIDENT_ID,在第二个表中它是INCIDENT_ID。所以字段名称是一样的。
  • 我只是输入了它,但实际上两者都不一样

标签: android sqlite


【解决方案1】:

给你。这是base things about joins 以及如何使用rawQuery在您的应用中完成此操作@

【讨论】:

    【解决方案2】:

    VisitModel.Visit_IncidentID 和 VisitModel.Visit_TravelIncidentID 的 String 值是多少?

    请注意,两个表中的列名相同。 打印出这个查询并检查是否没有类似的东西

        ...ON INCIDENT_ID = INCIDENT_ID ...
    

    【讨论】:

    • 两者不同
    • 您能发布您的查询结果吗?
    • 我只是在获取调用表值
    • 你可以在这里发布访问查询值吗?
    • ID INCIDENT_ID DESC START END -- ----------- ---- ----- --- 1 2 test 23 33
    【解决方案3】:

    更新

    如果您需要所有字段,请尝试使用此查询,

    "SELECT * FROM travel JOIN call ON travel.ID= call.ID"
    

    如果您需要特定的列

    "SELECT travel.Lat,call.START FROM travel JOIN call ON travel.ID= call.ID"
    

    如果您需要 ID

     "SELECT travel.Lat,call.START FROM travel JOIN call ON travel.ID= call.ID WHERE travel.ID='"+id_value+"'";
    

    例子

     "SELECT travel.Lat,call.START FROM travel JOIN call ON travel.ID= call.ID WHERE travel.ID='12345'";
    

    这将工作测试。travel 和 call 是两个不同的表名*。

    【讨论】:

    • travel t的意思是如何申报
    • 以及如何传递该 id 值
    • 我怀疑在哪里传递该 ID travel.ID 和 call.ID
    • 更新检查一次。
    • 它应该可以工作,我已经用这个查询测试过,它工作正常。否则,可能存在 ID 在 2 个表之间不匹配的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 2015-04-28
    相关资源
    最近更新 更多