繁体   English   中英

有条件地加入Mysql select语句

[英]Conditional join in Mysql select statement

我有两个表tbl_studentapplicationdetailstbl_studentqualification ...我的第二个表包含studentId和qualificationId ...现在我想加入两个表以获取具有其资格的学生列表...

注意:有些学生可能具有两或三个资格。...而我的查询是

select distinct t1.dStudent_id,t1.dStuFirstname,t1.dStuLastName,t1.dGender,
t1.dFatherName,t1.dOcupation,
t1.dAddress,t1.dContactNumber,t2.dMarks as sslc,t3.dMarks as hsc,
t4.dMarks as diplomo from tbl_studentapplicationdetails as t1
inner join tbl_studentqualification as t2 on t2.dQualification = '1'
inner join tbl_studentqualification as t3 on t3.dQualification = '2'
left  join tbl_studentqualification as t4     on t4.dQualification = '7' 

我的tbl_studentqualification

替代文字http://www.freeimagehosting.net/uploads/6e38525b5e.jpg

编辑:我想为具有两个资格的学生和具有三个资格的学生选择所有记录。

到目前为止,加入的意义不大,因为您根本没有将资格证书表与应用程序详细信息结合在一起。 假设您希望学生ID是唯一的,则每个学生只能获得一行。

如果我正确理解了您想要的内容,则希望在一个学生行中获取每种资格证书(1,2,7)的信息。 如果是这样,您应该尝试这样的操作(我希望那是正确的):

SELECT dStudent_id, dStuFirstname, dStuLastName, dGender,
       dFatherName, dOcupation, dAddress, dContactNumber,
       q1.dMarks as sslc, q2.dMarks as hsc, q7.dMarks as diplomo
FROM tbl_studentapplicationdetails
LEFT JOIN tbl_studentqualification as q1
    ON ( q1.dStudent_id = dStudent_id AND q1.dQualification = '1' )
LEFT JOIN tbl_studentqualification as q2
    ON ( q2.dStudent_id = dStudent_id AND q2.dQualification = '2' )
LEFT JOIN tbl_studentqualification as q7
    ON ( q7.dStudent_id = dStudent_id AND q7.dQualification = '7' )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM