mysql通过不返回左表中的所有结果离开了join和group

时间:2015-09-17 10:39:23

标签: php mysql join activerecord group-concat

我有以下表格:

extra_questions:

enter image description here

和extra_examples:

enter image description here

我希望加入并连接它们以便我返回所有问题,但在每个问题中,我会显示一个包含extra_examples中所有问题标签的下拉列表。

我目前有这个陈述(使用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();

以$ question返回。但是,当我循环讨论$问题时:

 <?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

我期待的地方:

2flower昆虫 3 4

但完全没有4。我想确保回复所有问题。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您的论坛应该在extra_questions.id而不是extra_examples.quesion

答案 1 :(得分:0)

你应该改变

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

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

因为问题4的extra_examples.question为NULL。