Android 从具有多个相关项的多个SQL表中检索数据

Android 从具有多个相关项的多个SQL表中检索数据,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我有一个包含三个表的数据库,与外键相关: 行程: ID Number Date 天数: 腿: 在我的应用程序中,每个表对应一个旅行类、日间类和腿部类。每次旅行都有一个相关天数的列表,每天都有一个相关航段的列表。目前,我通过运行所需行程的查询从数据库加载数据。然后,我运行另一个查询来获取与该旅行相关联的所有天数并添加这些天数,然后每天运行一个查询来获取相关联的腿并添加这些腿 在我看来,应该有一种更有效的方法来实现这一点。我唯一的另一个选择是对三个表进行三重连接,并获得一个游标,该游标在每条腿上都

我有一个包含三个表的数据库,与外键相关:

行程:

ID
Number
Date
天数:

腿:

在我的应用程序中,每个表对应一个旅行类、日间类和腿部类。每次旅行都有一个相关天数的列表,每天都有一个相关航段的列表。目前,我通过运行所需行程的查询从数据库加载数据。然后,我运行另一个查询来获取与该旅行相关联的所有天数并添加这些天数,然后每天运行一个查询来获取相关联的腿并添加这些腿


在我看来,应该有一种更有效的方法来实现这一点。我唯一的另一个选择是对三个表进行三重连接,并获得一个游标,该游标在每条腿上都有一行,该行还包含该腿的所有日期和行程数据?有更好的方法吗?我不太熟悉SQL查询。

Join是显而易见的答案:

选择*FOM行程t加入d天
在t.Id=d.TripId上
连接腿l
在d.Id=l.DayId上
其中t.Id=tripId

您需要将
tripId
替换为您试图查找的旅行id。一个好主意是用需要返回到应用程序的实际列替换
*

ID
TripID (Foreign key to ID column in trips)
Date
Start
End
ID
DayID (Foreign key to ID column in days)
Origin
Destination
SELECT * FOM Trips t JOIN Days d
ON t.Id = d.TripId
JOIN Legs l 
ON d.Id = l.DayId
WHERE t.Id = tripId