Sqlite 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

我在Windows Phone UWP应用程序上使用SQLite,但我想这个问题在任何SQL数据库上都同样有效:

我只是在寻找SQL来实现这一点——我可以自己将其插入到代码中

我有一个旅行目标:

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命令行中进行测试?