我有2個表。SQL加入問題,如果第二個表爲空,則返回null
表1(項目):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。該查詢僅返回具有評級的那些查詢。
我試過左連接,右連接,全連接,還是同樣的事情。
用笨的活動記錄:
$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();
我缺少什麼?
這是一個'LEFT JOIN'的定義,但我認爲你的'AVG'骨料的使用是不會對這個 – Phil 2011-05-03 02:11:25
工作我試過左連接...仍然返回1結果..我想全部 – tpae 2011-05-03 02:12:48
我有一種感覺,你將需要一個'GROUP BY p.id,p.name'但是我仍然不認爲第三列將會顯示正確的值。我可能是錯的,但懶得自己測試 – Phil 2011-05-03 02:14:16