在比较两列之间的日期时,左JOIN不起作用



在这里我正在进行CAB分配模块,在这里我将解释我的要求,将CAB分配给Shift Wines中的员工。我存储在CAB_ALLOCATION分配表中的详细信息。

cab_allocation(表名)

allocationId        from_allocationDate       to_allocationdate       cabId    shiftTiming
1                   2017-09-08                 2017-09-30             CBX100     1
2                   2017-09-08                 2017-09-30             CBX100     2

之后,我想跟踪这次旅行是否每天发生,对于我存储在Trip_details Table

的跟踪细节

trip_details(表名)

id      allocationId   tripDate   startTime   endTime      tripStatus
 1             1       2017-09-08  09:30:00    11:30:00       1
 2             2       2017-09-08  12.10.00    02:30:00       1
 3             1       2017-09-09  12.10.00                   0

昨天(2017-09-08)分配1&2 Trip已完成(TripStatus 1表示完成),而今天(2017-09-09)分配ID 1 Trip已开始但尚未完成(TripStatus 0表示未完成,例如正在进行的旅行)和今天(2017-09-09)(2017-09-09)分配2旅行似乎没有开始,因此Trip_details表中没有任何条目。

现在我想要的今天的howmany分配是我需要基于cab_allocation表的cabid中的详细信息,假设今天的旅行完成意味着旅行详细信息不应显示,假设今天的旅行未完成,则意味着我想要显示详细信息。<<<<<<<<<<<<<<<<<<<<<<<</p>

**我尝试过这样的**

SELECT a.allocationId, a.shiftTiming, a.cabId 
FROM cab_allocation a 
LEFT JOIN trip_details b ON a.allocationId = b.allocationId 
WHERE a.cabId='CBX100' AND b.tripStatus != '1' AND a.from_allocationDate >= '2017-09-09' AND a.to_allocationdate <= '2017-09-09'

但是我找不到结果,但是根据我的表结构,我需要这样的输出

    {
"status": "success",
"count": 2,
"data": [
    {
        "allocationId": "1",
        "shiftTiming": "1",
    },
    {
        "allocationId": "2",
        "shiftTiming": "2",
    }
]
}

我的更新代码

SELECT a.allocationId, a.date, a.shiftTiming, a.cabId 
FROM cab_allocation a 
LEFT JOIN trip_details b ON a.allocationId = b.allocationId 
WHERE a.cabId='CBX100' AND b.tripStatus != '1' AND a.from_allocationDate <= '2017-09-09' AND
  a.to_allocationdate >= '2017-09-09'

首先,您不需要left join。使用inner join。您的目的是进行过滤。

第二,您的where子句是:

WHERE a.cabId='CBX100' AND b.tripStatus <> '1' AND
      a.from_allocationDate >= '2017-09-09' AND
      a.to_allocationdate <= '2017-09-09'

您有向后日期的条件。您想要:

WHERE a.cabId='CBX100' AND b.tripStatus <> '1' AND
      a.from_allocationDate <= '2017-09-09' AND
      a.to_allocationdate >= '2017-09-09'

从日期起,必须为

最新更新