我正在使用php mysql并且有12个表包含学生信息。有3个主表第一个表是注册,第二个是demandraft,第三个是creditcard。demandraft表包含所有信用表表字段但是为空。现在我想从这三个表中获取整个数据来生成我的xls文件,但是因为在demandraft表中有一些空字段的信用表,所以无法从所有3个表中获取整个记录。在所有3个表中都有一个共同的字段。
这是我的联接查询:
$sql = "select * from registration
join programme on registration.id=programme.stuid
join family on registration.id=family.stuid
join address on registration.id=address.stuid
join education on registration.id=education.stuid
join extradetail on registration.id=extradetail.stuid
join workexperience on registration.id=workexperience.stuid
join demanddraft on registration.id=demanddraft.stuid
join payonline on registration.id=payonline.stuid
where (DATE(registration.createddate)>='".$term1."'
AND DATE(registration.createddate)<='".$term2."')";
答案 0 :(得分:1)
使用左连接。
select *
from a join b on a.id = b.a_id
不会列出表b中未出现的表格行。
select *
from a left join b on a.id = b.a_id
意愿。
使用多个表链接其中许多链接时,左连接可能有点棘手。您可能必须巧妙地在连接周围使用括号,以使连接顺序正确。
答案 1 :(得分:1)
这:
$sql = "select * from registration
left join programme on registration.id=programme.stuid
left join family on registration.id=family.stuid
left join address on registration.id=address.stuid
left join education on registration.id=education.stuid
left join extradetail on registration.id=extradetail.stuid
left join workexperience on registration.id=workexperience.stuid
left join demanddraft on registration.id=demanddraft.stuid
left join payonline on registration.id=payonline.stuid
where (DATE(registration.createddate)>='".$term1."'
AND DATE(registration.createddate)<='".$term2."')";
应该做的伎俩