2014-11-16 5 views
1

나는 이것이 내가 원하는 것을 얻을 완벽하게 잘 작동 일반 SQL 구문CodeIgniter의 SQL 쿼리없는 열은

SELECT * 
FROM question 
LEFT JOIN abcd_selection ON question.questionID = abcd_selection.questionID 
WHERE question.SurveyID =21 

에서이 같은 것입니다이 SQL 쿼리가 있습니다. 그러나 이것을 CI로 전환하면 이상하게 작동하지 않습니다. abcd_selection과 일치하지 않는 행에 대해 questionID 열이 사라집니다.

$this->db->select('*'); 
$this->db->from('question'); 
$this->db->join('abcd_selection','question.QuestionID = abcd_selection.QuestionID', 'left'); 
$this->db->where('question.SurveyID', $input_qid); 

$query = $this->db->get(); 

누구든지 해결할 수 있습니까 ??

+0

'question.questionID = abcd_selection.questionID'! ='question.QuestionID = abcd_selection.QuestionID','questionID' /'QuestionID' 케이스를 다시 확인하십시오. – Sean

+0

예 두 테이블 모두 QuestionID입니다. – xKlydez

+0

두 열 이름 모두'QuestionID'이므로'abcd_selection'에 행이있을 때 같은 값을 두 번 가져 오지만 행이 없으면 두 번째'QuestionID'는'NULL'입니다. 별칭 ->'$ this-> db-> select ('*, question.QuestionID as QID');를 사용하여 시도해 볼 수 있습니다. 그렇게하면'abcd_selection.QuestionID'가 존재하지 않아도'QID'를 선택할 수 있고'NULL'으로 끝나지 않게됩니다. – Sean

답변

0

동일한 열 이름을 가진 두 개의 테이블을 결합 할 때 두 번째 테이블에서 일치하는 행이 없을 때 NULL 값을 얻게됩니다. 열 이름 이후

question.SurveyID question.QuestionID abcd_selection.QuestionID 
1     2     2 //matching row in abcd_selection 
2     3     NULL //no matching row in abcd_selection 

동일한, PHP가 일치하는 행이 존재하지 않는 경우 일 것이다 NULL QuestionID의 마지막 인스턴스를 선택한다 있습니다. 이 문제를 해결하기 위해

한 가지 방법은 abcd_selection.QuestionID가 존재하지 않는 경우에도

$this->db->select('*,question.QuestionID as QID'); 

지금 당신이 $query['QID']를 선택할 수 있습니다 별칭으로 열을 선택하는 것입니다.