在php mysql中,3个表上的联接查询无法正常工作
我正在使用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
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