2014-01-26 3 views
0

У меня есть две таблицы, какMySql левого внешнее соединения с condiction

student_info(id,mobile,cTId,lvDate) 

    term_marks(tmId,stdId,cTId,marks,year) 

Теперь я хочу, чтобы узнать все студенческий билет, которые не представляет term_marks в зависимости другую проверку, поэтому я использую этот запрос, но он возвращает все что соответствует и не соответствует две таблицы

 $sql = "select * from student_info si LEFT OUTER JOIN term_marks tm ON si.id=tm.stdId and si.cTId=tm.cTId AND tm.year=$year) 
WHERE si.cTId=$cTId and si.lvDate=0"; 

Также я пробовал

 $sql = "select * from student_info si left outer JOIN term_marks tm where si.id=tm.stdId 
    and si.cTId=tm.cTId and si.cTId=$cTId and tm.year=$year and si.lvDate=0"; 

Вы можете мне помочь?

ответ

2
SELECT si.* 
FROM student_info si 
WHERE si.cTId = $cTId 
    AND si.lvDate = 0 
    AND si.id NOT IN 
    ( 
    SELECT tm.stdId 
    FROM term_marks tm 
    WHERE tm.year = $year 
) 
+0

Но другие условия? –

+0

Просто добавьте свои условия. См. Мое редактирование. – Linger

+1

это возможно? $ sql = "SELECT si. * FROM student_info si WHERE si.id NOT IN (SELECT tm.stdId FROM term_marks tm WHERE tm.year = $ year) и si.cTId = $ cTId и si.lvDate = 0"; –

Смежные вопросы