【发布时间】:2021-02-15 02:29:48
【问题描述】:
我正在加入两个表,即带有评级表的商店表,并且想要获取所有带有单个商店评级的商店列表,我已经为此编写了查询,但在输出中只获取那些在评级表中具有评级的商店,但我想要如果店铺没有评分则显示 0 否则按表记录显示。
车间表:-
id shop name
1 shop_1
2 shop_2
3 shop_3
4 shop_4
评分表
id shop_id rating
1 1 3
2 4 2
查询:
$this->db->select('shop.*,shop.id as shop_id');
$this->db->select('COALESCE(ROUND(AVG(rat.rating),1),0) as avgRate');
$this->db->from('shop');
$this->db->join('rating_reviews as rat', 'rat.shop=shop.id', 'left');
$this->db->get()->result_array();
当前输出:
id shop_id avgRate
1 1 3
2 4 2
预期输出:
id shop_id avgRate
1 1 3
2 2 0 //(no rating given for this shop)
3 3 0 //(no rating given for this shop)
4 4 2
【问题讨论】:
-
@Strawberry 都说的很清楚了,还有什么要说的吗?
-
如果我必须解释链接,这反而会破坏提供链接的意义,不是吗?
-
我没有创建任何小提琴链接,正在处理项目所以现在面临这个问题。
-
试试这个 SELECT shop.id , shop.name FROM shop LEFT JOIN rating_reviews ON shop.id=rating_reviews.shop_id
标签: php mysql sql codeigniter join