CodeIgniter SQL查询缺少列

时间:2014-11-16 05:11:18

标签: php mysql codeigniter

我有这个SQL查询,在普通的sql语法

中是这样的
SELECT *
FROM question
LEFT JOIN abcd_selection ON question.questionID = abcd_selection.questionID
WHERE question.SurveyID =21

这完全没问题,我得到了我想要的东西。但是,当我将其切换到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();

任何人都可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

当连接2个具有相同列名的表时,如果第二个表中没有匹配的行,则会得到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将选择QuestionID的最后一个实例,当匹配的行不存在时,它将为NULL

解决此问题的一种方法是选择列作为别名

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

现在即使$query['QID']不存在,您也可以选择abcd_selection.QuestionID