2010-05-24 63 views
1

我正在做几个表上的左连接。我想要发生的是它列出了所有的业务。然后,它会查看照片,视频,特殊内容和类别。如果有照片,则表格显示是,如果有视频,则在表格中显示为是。我搞砸了这个左加入

这样做没有任何问题。除了一件事。对于每张照片,它都会多次展示该商家。例如,如果商业数据库中有5张照片,则会显示该商家五次。

显然,这不是我想要发生的事情。你能帮我吗?

function frontPageList() { 
    $this->db->select('b.id, b.busname, b.busowner, b.webaddress, p.thumb, v.title, c.catname'); 
    $this->db->from ('business AS b'); 
    $this->db->where('b.featured', '1'); 
    $this->db->join('photos AS p', 'p.busid = b.id', 'left'); 
    $this->db->join('video AS v', 'v.busid = b.id', 'left'); 
    $this->db->join('specials AS s', 's.busid = b.id', 'left'); 
    $this->db->join('category As c', 'b.category = c.id', 'left'); 
    return $this->db->get(); 
+1

这是一些看起来很有趣的SQL添加。 ;-) – amphetamachine 2010-05-24 23:49:48

回答

1

,如果你不关心自己的照片,或者哪一个抓住,你可以尝试在GROUP BY b.id

+0

谢谢!这解决了它。我做了$ this-> db-> group_by(“b.id”); – 2010-05-25 00:18:24

0

如果存在多个匹配项,联接将乘以行数。如果这不是你想要的,那么你应该先开始计数,然后分别查询每个表的实际行数,或者应该根据business值的更改时间在代码中进行分组。