我有2个表。
表1 (projects):id,名称,类型
表2 (project_ratings):project_id,评分
一些项目没有评分。
SELECT `p`.`id`, `p`.`name`, AVG(pr.rating) FROM (`projects` p) JOIN `project_ratings` pr ON `p`.`id` = `pr`.`project_id` WHERE `p`.`type` = 'group' OR `p`.`type` = 'user';
我希望返回所有项目,如果没有评级则返回NULL。这个查询只返回有评级的项目。
我尝试了左连接、右连接、全连接,但结果都一样。
使用CodeIgniter Active Records:
$this->db->select("p.id, p.name, AVG(pr.rating)");
$this->db->from('projects p');
$this->db->join('project_ratings pr', 'p.id = pr.project_id');
$this->db->where('p.type', 'group');
$this->db->or_where('p.type', 'user');
$res = $this->db->get();
我错过了什么吗?
GROUP BY p.id, p.name
,但我仍然认为第三列不会显示正确的值。我可能错了,但懒得自己测试。 - Phil