【问题标题】:ORMLITE Join 3 Tables with 2 search parametersORMLITE 使用 2 个搜索参数连接 3 个表
【发布时间】:2014-07-21 22:47:55
【问题描述】:

我正在寻找具有 3 个连接表和 2 个类似参数的 ORMLite 问题的解决方案。

数据库中有5个表(3个主表和2个依赖表)。数据库构建如下:

警报 >> AlarmEvent > EventCalendar

现在我尝试获取包含在一个特殊警报中并在一个日历上引用的所有事件。但是当我运行我的查询时,我总是看到所有事件,我不知道如何解决这个问题。 这是我针对此查询的最新功能。

    private PreparedQuery<EventItem> makeEventsForCalendarAndAlarmQuery(
        int Alarmid, int CalId) throws SQLException {

    QueryBuilder<AlarmEntry, Integer> alarmQb = getHelper()
            .getAlarmListDao().queryBuilder();
    QueryBuilder<AlarmEvent, Integer> alarmEventQb = getHelper()
            .getAlarmEventDao().queryBuilder();
    QueryBuilder<EventItem, Integer> eventQb = getHelper()
            .getEventItemDao().queryBuilder();
    QueryBuilder<CalendarEvent, Integer> calendarEventQb = getHelper()
            .getCalendarEventDao().queryBuilder();
    QueryBuilder<CalendarDb, Integer> calendarDbQb = getHelper()
            .getCalendarDbDao().queryBuilder();

    alarmEventQb.leftJoin(alarmQb);
    eventQb.leftJoin(alarmEventQb);
    calendarEventQb.leftJoin(eventQb);
    calendarDbQb.where().like(CalendarDb.CAL_ID_FIELD_NAME, CalId);
    calendarDbQb.join(calendarEventQb);
    eventQb.join(calendarDbQb);
    return eventQb.prepare();
}

如何设置查询以仅获取引用一个选定警报和一个选定日历的事件?

编辑: SQL 语句应该看起来像这样。我是 sql 初学者,所以可能语句不正确:

SELECT * FROM EventItem INNER JOIN (CalendarEvent INNER JOIN  CalendarDb WHERE id = calid) INNER JOIN (AlarmEvent INNER JOIN AlarmEntry where AlarmEntry.id = alarmId) 

【问题讨论】:

    标签: android sql sqlite ormlite


    【解决方案1】:

    好的,问题似乎解决了。 我设置了以下代码:

        calendarEventQb.where().eq(CalendarEvent.CALENDARDB_ID_FIELD_NAME, CalId);
        alarmEventQb.where().eq(AlarmEvent.ALARMENTRY_ID_FIELD_NAME, Alarmid);
    
        eventQb.join(calendarEventQb).join(alarmEventQb);
    

    通过这个语句,我得到了我正在寻找的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 2020-05-24
      • 1970-01-01
      相关资源
      最近更新 更多