2010-05-24 62 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值的更改時間在代碼中進行分組。