独特的MySQL加入

时间:2018-03-09 15:39:46

标签: php mysql codeigniter

希望有人可以帮我处理MYSQL查询

我有3个数据库表:

  • points_of_interest
  • point_of_interest_type
  • poi_poi_types

points_of_interest表包含有关某个区域的所有详细信息。

point_of_interest_type表是类型列表,例如餐厅,咖啡厅,博物馆等。此表还有一个活动列(1或0)

poi_poi_types是一个映射表 - 因此它包含兴趣点的id和兴趣点类型的id

兴趣点可以有多种兴趣点类型,因此可能在poi_poi_types表中有多个条目

所以我想要的结果是返回points_of_interest列表,但仅限于活跃的兴趣点类型

这是我到目前为止的codeignitor查询,但它不正确 - 它返回poi_poi_types表中实际兴趣点的每个瞬间

    $this->db->select('poi.*, poi_types.type as poi_type');
    $this->db->from('poi');
    $this->db->join('poi_poi_types', 'poi.id = poi_poi_types.poi_id');
    $this->db->join('poi_types', 'poi_types.id = poi_poi_types.poi_type_id');
    $this->db->where('poi_types.active', 1);

1 个答案:

答案 0 :(得分:0)

我相信这应该有效。好吧,设置它使select语句不同。我认为这基本上会SELECT DISTINCT

$this->db->distinct();
$this->db->select('poi.*, poi_types.type as poi_type');
$this->db->from('poi');
$this->db->join('poi_poi_types', 'poi.id = poi_poi_types.poi_id');
$this->db->join('poi_types', 'poi_types.id = poi_poi_types.poi_type_id');
$this->db->where('poi_types.active', 1);