需要根据用户ID查询竞赛表

时间:2018-09-20 20:02:32

标签: java android sql

我有三个表,用户表,种族表和user_races表。 用户比赛表存储race_id和user_id作为外键,引用用户表中的user_id和种族表中的race_id。 我需要根据用户ID查询单个用户的所有比赛。 设计此“学习和练习编程竞赛应用程序”时的想法 进行此“关系数据库”是要查询所有种族,在我称为“ raceList(int userID)”的功能中指定了用户ID的种族中,但到目前为止它没有用。 SELECT语句一定是错误的,将不胜感激。

public List<Race> raceList(int userid){
    SQLiteDatabase db = this.getReadableDatabase();
    String query;
    query = "SELECT * FROM " + RACES_TABLE_NAME+"a INNER JOIN "+USER_RACES_TABLE_NAME+" b ON a.id=b.race_id WHERE b.user_id ="+userid;
    Cursor cursor = db.rawQuery(query,null);
    List<Race> raceLinkedList = new LinkedList<>();
    Race race;

    if(cursor.moveToFirst()) {
        do {
            race = new Race();
            race.setId(cursor.getInt(cursor.getColumnIndex(RACE_ID)));
            race.setName(cursor.getString(cursor.getColumnIndex(RACE_NAME)));
            race.setDate(cursor.getString(cursor.getColumnIndex(RACE_DATE)));
            race.setHost(cursor.getString(cursor.getColumnIndex(RACE_HOST)));
            race.setHostWebsite(cursor.getString(cursor.getColumnIndex(RACE_HOST_WEB)));
            race.setOfficer(cursor.getString(cursor.getColumnIndex(RACE_OFFICER)));
            race.setOfficerNumber(cursor.getString(cursor.getColumnIndex(RACE_OFFICER_N)));
            raceLinkedList.add(race);
        } while (cursor.moveToNext());
        cursor.close();
    }
    return raceLinkedList;
}

1 个答案:

答案 0 :(得分:0)

在阅读了有关加入查询的更多信息后,发现这是正确的代码

query = "SELECT * FROM userRaces LEFT JOIN races ON userRaces.race_id=races.id "
+"LEFT JOIN users ON userRaces.user_id=users.id WHERE userRaces.user_id="+userid;

效果很好。