Php 比较两列之间的日期时,左联接不起作用

Php 比较两列之间的日期时,左联接不起作用,php,mysql,sql,left-join,Php,Mysql,Sql,Left Join,我在这里做cab分配模块,在这里我将解释我的要求,管理员按班次分配cab给员工。这些详细信息我存储在cab_分配表中 驾驶室分配(表名) 在这之后,我想跟踪这趟旅行是否每天都在发生,对于我存储在trip_details表中的跟踪细节 行程详情(表名) 昨天(2017-09-08)分配ID 1和2行程已完成(tripStatus 1表示已完成),今天(2017-09-09)分配ID 1行程已开始但尚未完成(tripStatus 0表示未完成,如正在进行的行程),而今天(2017-09-09)分配I

我在这里做cab分配模块,在这里我将解释我的要求,管理员按班次分配cab给员工。这些详细信息我存储在cab_分配表中

驾驶室分配(表名)

在这之后,我想跟踪这趟旅行是否每天都在发生,对于我存储在trip_details表中的跟踪细节

行程详情(表名)

昨天(2017-09-08)分配ID 1和2行程已完成(tripStatus 1表示已完成),今天(2017-09-09)分配ID 1行程已开始但尚未完成(tripStatus 0表示未完成,如正在进行的行程),而今天(2017-09-09)分配ID 2行程似乎未开始,因此行程详情表中没有条目

现在我想要的是今天有多少分配,我需要基于cabId的cab_分配表中的详细信息,假设今天行程已完成意味着不应显示行程详细信息,假设今天行程未完成意味着我要显示详细信息

**我试过这样做**

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'
我的更新代码


选择a.allocationId、a.date、a.shiftting、a.cabId
从cab_分配a
a.allocationId=b.allocationId上的左连接行程\u详细信息b
其中a.cabId='CBX100'和b.tripStatus!='1'和a.自分配日期起='2017-09-09'

首先,您不想为此使用
左连接。使用
内部联接
。您的意图是进行过滤

其次,您的
where
子句是:

WHERE a.cabId='CBX100' AND b.tripStatus <> '1' AND
      a.from_allocationDate >= '2017-09-09' AND
      a.to_allocationdate <= '2017-09-09'
其中a.cabId='CBX100'和b.tripStatus'1'和
a、 自分配日期>='2017-09-09'和

a、 为了_allocationdate@我尝试了你的代码,但是我得到了结果,MySQL返回了一个空的结果集(即零行)选择a.allocationId,a.date,a.shiftitming,a.cabId FROM cab\u allocation a internal JOIN trip\u在a.allocationId=b.allocationId上详细说明b,其中a.cabId='CBX100'和b.tripStatus'1'和a.FROM\u allocationDate>='2017-09-09'和a.to\u allocationDate我尝试了此sql查询,但结果为空,您测试了这段代码,它对您来说运行正常吗?请查看我更新的sql查询,我这样尝试意味着它是一个结果(allocationId 1),但实际结果是两个。您在吗?据我所知,我认为今天分配id 2 trip它自己没有启动,所以trip_details中没有条目,因为我们正在获取分配id 2详细信息,我们如何解决这个问题您的示例数据和您的查询有不同的列。@Gordon Linoff,现在请检查我的查询和示例数据是否相同有任何一个?据我所知,我认为今天分配id 2 trip it self未启动,因此trip_详细信息中没有条目,因为我们正在获取分配id 2详细信息,我们如何解决此问题,您似乎不理解与null和/或left join的比较。它是内部联接行加上由null扩展的不匹配的左表行。您不能表示希望
左连接
where b.x!='1'
因为要这样做,b.x不能为null,所以不能返回任何null扩展行,所以不需要左连接,只需要内部连接。您的帖子和评论中的文字不清楚,请使用更多的句子和单词。试试translate.google.com,最近人工智能的效果要好得多。为什么会有“更新代码”?请讲清楚。
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'
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'