Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php mysql中,3个表上的联接查询无法正常工作_Php_Mysql_Join_Jointable - Fatal编程技术网

在php mysql中,3个表上的联接查询无法正常工作

在php mysql中,3个表上的联接查询无法正常工作,php,mysql,join,jointable,Php,Mysql,Join,Jointable,我正在使用php mysql,我加入了3个表:demanddraft、paynline和registration。现在,我想根据校园课程和考试日期从这三个表中获取值 注册表有三个字段:campus1、course1和examdate,根据这三个字段,我们必须从表demanddraft和paynline中获取值。我想从paynline表中获取status=success的值,从demanddraft表中获取ddstatus=approved的值。但无法获取所需的记录 我的问题是: $sql= "s

我正在使用php mysql,我加入了3个表:
demanddraft
paynline
registration
。现在,我想根据校园课程和考试日期从这三个表中获取值

注册表有三个字段:
campus1
course1
examdate
,根据这三个字段,我们必须从表demanddraft和paynline中获取值。我想从paynline表中获取
status=success
的值,从demanddraft表中获取
ddstatus=approved
的值。但无法获取所需的记录

我的问题是:

$sql= "select * from programme prog 
join demanddraft dem ON prog.stuid = dem.stuid 
join payonline pay ON pay.stuid = prog.stuid  
where ((pay.status='success' || dem.ddstatus='Approved') 
&& prog.campus1='".$campus1."') && prog.course1='".$course1."'
&&  prog.examdate='".$examdate."'";
提前感谢您的帮助

没有错误,但几乎没有记录丢失。例如,我有194名学生 在付款线表中获得成功,在demendraft中获得批准的9名学生 表so总计应为203,但我的查询为183

这可能是你的实际结果。 正如我看到的那样,您在何处((pay.status='success'| | dem.ddstatus='Approved')) &&prog.campus1='“$campus1.”)。所以,是的,在pay表中可以有194个,在dem表中可以有9个,但这并不意味着它们都有prog.campus1=“$campus1”。或任何下一个条件


如果您可以发布您的表和数据,这样我们就可以运行查询并浏览您的数据了(200条记录并不多)

您的mysql服务器会抛出什么错误?您使用的是“Approved”,这可能是“批准的”吗?@Ali:没有错误,但缺少几条记录。例如,我有194名学生在付款行表中获得成功,9名学生在demendraft表中获得批准,因此总数应该是203,但我的查询给了我183。可能需要左联接首先运行联接,然后逐个添加筛选器并进行测试。没有数据很难找到确切的问题。我已将我的查询更改为$sql=“select*from prog join demanddraft dem ON prog.stuid=dem.stuid left join paynline pay ON pay.stuid=prog.stuid,其中(pay.status='success'| | dem.ddstatus='Approved')&&prog.campus1'&&prog.course1='$course1'.&prog.course1'.'.$examdate.“'”;亲爱的,如果学生填写他们的所有记录,表中的状态将被批准或成功,因此这些where子句字段不能为空。无法构建SQLFIDLE我将根据您的邮件id向您发送我的表请发送您的id