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。
我有以下表格:
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。