我搞砸了这个LEFT JOIN

时间:2010-05-24 23:45:25

标签: php codeigniter

我在几张桌子上做左联。我想要发生的是它列出了所有的业务。然后,它会查看照片,视频,特价和类别。如果有照片,则表格显示是,如果有视频,则在表格中显示是。

没有任何问题,它可以做到这一切。除了一件事。对于每张照片,它多次显示业务。例如,如果企业数据库中有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();

2 个答案:

答案 0 :(得分:1)

如果你不关心照片本身,或者它们抓住哪一张,你可以尝试添加一个GROUP BY b.id

答案 1 :(得分:0)

如果有多个匹配,则连接将乘以行数。如果这不是您想要的,那么您应该从获取计数开始,然后分别查询每个表中的实际行,或者您应该根据business值更改的时间对代码进行分组。