Codeigniter连接,分组并计算一个表中的一行

时间:2017-11-15 20:21:06

标签: mysql codeigniter codeigniter-3

我正在努力使用此代码来获取book_listing(完全)的计数结果,这是预订的总数。从结果来看,有些是正确的,但有些则乘以3左右。

这是我的代码:

$this->db->where('list_status', 1)
         ->where('list_date >=', date('Y-m-d'))
         ->order_by("user_listings.list_created", "desc")
         ->limit(18, null)
         ->select('*, COUNT(user_bookings.book_listing) as totally')
         ->from('user_listings')
         ->join('user_images', 'user_images.img_listing = user_listings.list_reference')
         ->join('user_states', 'user_states.state_id = user_listings.list_state')
         ->join('user_bookings', 'user_bookings.book_listing = user_listings.list_reference', 'left')
         ->group_by('user_listings.list_reference')
         ->get();

感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

所以我解决了它,user_images表似乎导致了问题,因为我需要它来获取多个图像而只返回一个。

$this->db->where('list_status', 1)
         ->where('list_date >=', date('Y-m-d'))
         ->order_by("user_listings.list_created", "desc")
         ->limit(18, null)
         ->select('user_listings.*,image.*,user_states.*')
         ->select('COUNT(user_bookings.book_listing) as totalBooked')
         ->from('user_listings')
         ->join('user_bookings', 'user_bookings.book_listing = user_listings.list_reference', 'left')
         ->join('(SELECT * FROM user_images WHERE user_images.img_key IN(SELECT MIN(user_images.img_key) FROM user_images GROUP BY user_images.img_listing)) AS image',
                                            'image.img_listing = user_listings.list_reference')
         ->join('user_states', 'user_states.state_id = user_listings.list_state')
         ->group_by('user_listings.list_reference')
         ->get();

基本上,我必须从user_images的连接表中进行选择。希望它可以帮助别人:)