我有三个表,用户表,种族表和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;
}
答案 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;
效果很好。