mysql 通过不返回左侧的所有结果来进行左连接和分组 table

mysql left join and group by not returning all results in left table

我有以下表格:

extra_questions:

和extra_examples:

我想加入并连接它们,以便我 return 所有问题,但在每个问题中,我显示一个下拉列表,其中包含来自 extra_examples.[=17= 的所有问题标签]

我目前有这个声明(使用codeigniter/activerecord):

$this->db->select('extra_questions.*, GROUP_CONCAT(extra_examples.tag) as tag',FALSE);
        $this->db->from('extra_questions');
        $this->db->join('extra_examples','extra_questions.id = extra_examples.question','left outer');
        $this->db->group_by('extra_examples.question');
        $this->db->order_by('extra_questions.id');
        $query = $this->db->get();
        return $query->result_array();

其中 return 是 $questions。但是当我遍历 $questions:

 <?php foreach ($questions as $i=>$questions_item): ?>
            <?php print_r($questions_item['id']); print_r($questions_item['tag']); echo '<br/><br/>' ?>
<?php endforeach ?>

我得到了一些奇怪的结果:

2flower,insect

3

我期望的地方:

2花虫 3个 4

但是 4 完全不见了。我想确保所有问题都 returned。我做错了什么?

您的分组依据应该在 extra_questions.id 而不是 extra_examples.quesion

你应该改变

$this->db->group_by('extra_examples.question');

$this->db->group_by('extra_questions.id');

因为 extra_examples.question 对于问题 4 为 NULL。