Условное соединение в Mysql select - PullRequest
0 голосов
/ 03 февраля 2010

У меня есть две таблицы tbl_studentapplicationdetails и tbl_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 это

altтекст http://www.freeimagehosting.net/uploads/6e38525b5e.jpg

РЕДАКТИРОВАТЬ: Я хочу выбрать все записи для студентов, имеющих две квалификации и студентов, имеющих три квалификации ....

Ответы [ 2 ]

2 голосов
/ 03 февраля 2010

На данный момент ваши объединения имеют меньше смысла, потому что вы вообще не объединяете таблицу квалификации с деталями заявки. Если вы хотите, чтобы идентификатор учащегося отличался, вы получите только одну строку на каждого учащегося.

Если я правильно понял, что вы хотите, вы хотите получить информацию для каждого типа квалификации (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' )
0 голосов
/ 03 февраля 2010

GROUP_CONCAT должна решить вашу проблему. Смотри http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_group-concat

...