Sqlite SQL-给定发生事件的日期,获取发生相同事件的所有连续天数/记录
我在Windows Phone UWP应用程序上使用SQLite,但我想这个问题在任何SQL数据库上都同样有效: 我只是在寻找SQL来实现这一点——我可以自己将其插入到代码中 我有一个旅行目标:Sqlite SQL-给定发生事件的日期,获取发生相同事件的所有连续天数/记录,sqlite,Sqlite,我在Windows Phone UWP应用程序上使用SQLite,但我想这个问题在任何SQL数据库上都同样有效: 我只是在寻找SQL来实现这一点——我可以自己将其插入到代码中 我有一个旅行目标: public class Trip { public string Iso3Code { get; set; } public string CityCode { get; set; } public string StateCode { get; set; } publ
public class Trip
{
public string Iso3Code { get; set; }
public string CityCode { get; set; }
public string StateCode { get; set; }
public DateTime Date { get; set; }
public bool DeletedTrip { get; set; }
}
当用户添加行程时,将为行程的每一天创建一个trip
对象,例如,用户添加从4月1日到4月5日的法国行程。系统创建5个Trip
对象,每天一个
我遇到了一个问题,给定日期
,Iso3Code
(国家代码),状态代码
和城市代码
,我需要从SQLite数据库中获取所有Trip
对象。e、 g.对于上面的trip示例,假设我有2017-04-03的日期,我需要一种从数据库检索所有5个trip
对象的有效方法
我目前的方法可行,但对于长途旅行(例如2年),速度非常慢-在旅行期间,我基本上每天访问数据库一次:
internal static List<Trip> GetWholeTrip(Trip trip)
{
List<Trip> wholeTrip = new List<Trip>();
Trip currentTrip = trip;
//get trips before this date
while (currentTrip != null)
{
wholeTrip.Insert(0, currentTrip);
currentTrip = GetAllTripsOnDate(currentTrip.Date.Date.AddDays(-1)).FirstOrDefault(p => p.Iso3Code == trip.Iso3Code && p.StateCode == trip.StateCode && p.CityCode == trip.CityCode && !p.DeletedTrip);//Note: RMc - should only ever be 1 but using FirstOrDefault as we don't control the TT web service!
}
//get trips after this date
currentTrip = GetAllTripsOnDate(trip.Date.Date.AddDays(1)).FirstOrDefault(p => p.Iso3Code == trip.Iso3Code && p.StateCode == trip.StateCode && p.CityCode == trip.CityCode && !p.DeletedTrip);//Note: RMc - should only ever be 1 but using FirstOrDefault as we don't control the TT web service!
while (currentTrip != null)
{
wholeTrip.Add(currentTrip);
currentTrip = GetAllTripsOnDate(currentTrip.Date.Date.AddDays(1)).FirstOrDefault(p => p.Iso3Code == trip.Iso3Code && p.StateCode == trip.StateCode && p.CityCode == trip.CityCode && !p.DeletedTrip);//Note: RMc - should only ever be 1 but using FirstOrDefault as we don't control the TT web service!
}
return wholeTrip;
}
内部静态列表GetWholeTrip(跳闸)
{
List wholeTrip=新列表();
跳闸电流跳闸=跳闸;
//在这个日期之前得到旅行
while(currentTrip!=null)
{
插入(0,当前行程);
currentTrip=GetAllTripsOnDate(currentTrip.Date.Date.AddDays(-1)).FirstOrDefault(p=>p.Iso3Code==trip.Iso3Code&&p.StateCode==trip.StateCode&&p.CityCode==trip.CityCode&&p.DeletedTrip);//注意:RMc-应该永远是1,但使用FirstOrDefault,因为我们不控制TT web服务!
}
//在这个日期之后得到旅行
currentTrip=GetAllTripsOnDate(trip.Date.Date.AddDays(1)).FirstOrDefault(p=>p.Iso3Code==trip.Iso3Code&&p.StateCode==trip.StateCode&&p.CityCode==trip.CityCode&&p.DeletedTrip);//注意:RMc-应该永远是1,但使用FirstOrDefault,因为我们不控制TT web服务!
while(currentTrip!=null)
{
添加(当前行程);
currentTrip=GetAllTripsOnDate(currentTrip.Date.Date.AddDays(1)).FirstOrDefault(p=>p.Iso3Code==trip.Iso3Code&&p.StateCode==trip.StateCode&&p.CityCode==trip.CityCode&&p.DeletedTrip);//注意:RMc-应该永远是1,但使用FirstOrDefault,因为我们不控制TT web服务!
}
返回全裂;
}
因此,我基本上从提供的日期向后循环,直到到达指定位置没有行程的一天,然后返回到提供的日期并向前循环到指定位置没有行程的一天。这给了我连续几天去那个地方的行程
是否有SQL语句可用于返回所需数据无论是一次点击,还是-任何低于上面的都是好的。不要在标签中列出所有不同的数据库,只需将标签用于您实际使用的数据库。很公平-我假设一些人会忽视如果他们不使用SQLiteYes,他们会的。但是它仍然出现在他们的搜索中,这很烦人。为什么你没有两个对象,
Trip
和TripDay
?请为SQLite创建一个MCVE,它将是一个。dump
,带有创建表
和几个插入
,提供一些可玩的东西。然后定义一些期望的输出。我不知道你的问题包含什么语言。只提供包含所需信息的SQLite查询可以吗?也就是说,不将其嵌入到代码中,而只在SQLite命令行中进行测试?