2010-02-03 4 views
0

J'ai deux tables tbl_studentapplicationdetails et tbl_studentqualification ... Ma deuxième table contient StudentID et qualificationId ... Maintenant, je veux joindre deux tables pour obtenir la liste des élèves avec leur qualification ...conditionnelle se joindre à l'instruction select Mysql

REMARQUE: Certains étudiants peuvent avoir deux ou trois qualifications .... et ma requête est

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' 

et mon tbl_studentqualification est

alt text http://www.freeimagehosting.net/uploads/6e38525b5e.jpg

EDIT: Je veux sélectionner tous les enregistrements pour les étudiants ayant deux qualifications et étudiants ayant trois qualifications ....

+0

et votre question est? –

+0

Si un étudiant a plus d'une qualification, laquelle voulez-vous retourner? Celui avec la plus grande "année de passage"? Et s'il y a une cravate? –

+0

@Donny: Je suppose qu'il veut une ligne par étudiant, à en juger par l'utilisation du mot-clé DISTINCT avant la colonne des étudiants (ce n'est pas comme ça que ça fonctionne). –

Répondre

2

A partir de maintenant, vos jointures ont moins de sens car vous ne rejoignez pas la table de qualification avec les détails de l'application. Étant donné que vous voulez que l'identifiant de l'étudiant soit distinct, vous n'obtiendrez qu'une seule ligne par élève.

Si j'ai compris ce que vous voulez correctement, vous voulez obtenir des informations pour chaque type de qualification (1,2,7) en un rangée d'étudiants. Si c'est le cas, vous devriez plutôt essayer quelque chose comme ceci (j'espère que c'est correct):

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') 
+0

@poke qui a travaillé ... –