2015-12-15 27 views
0
public function getUserList() { 
     $sql = "SELECT users.id, users.name, about.profile_img, user_game_info.at_game, SUM(user_img.likes) AS likes FROM users 
       JOIN about ON users.id = about.uid 
       JOIN user_game_info ON about.uid = user_game_info.uid 
       INNER JOIN user_img ON user_game_info.uid = user_img.uid"; 
     $query = $this->db->query($sql, PDO::FETCH_ASSOC); 
     if ($query->rowCount()) { 
      $userList = $query->fetchAll(); 
      return $userList; 
     } 
     return false;  
    } 

它的工作原理,但如果我的user_img沒有UID,我想告訴喜歡數0 該查詢返回只有img_user有UID,如果沒有它沒沒有任何回報。MySQL的加入任何回報,如果沒有數據

enter image description here

enter image description here

這僅適用於user_img。例如,查詢必須爲UID 3.返回0,因爲user_img沒有UID = 3,但它不返回任何數據UID 3.

+0

使用'outer join'而不是... – sgeddes

回答

2

OK我已經更新了SQL再試一次:

您需要左連接:

$sql = ' 
SELECT u.id, u.name, a.profile_img, ugi.at_game, SUM(ifnull(i.likes,0)) AS likes 
FROM users u 
LEFT JOIN about a ON u.id = a.uid 
LEFT JOIN user_game_info ugi ON u.id = ugi.uid 
LEFT JOIN user_img i ON u.id = i.uid 
GROUP BY 1'; 
+0

它只返回第一行。如果我刪除user_img,它會返回所有數據 –

+0

我不確定你的表結構和表的關係。嘗試所有LEFT加入並看看會發生什麼。順便說一句,嘗試:http://topnew.net/sidu可能會更容易爲你管理mysql – SIDU

+0

它似乎總有問題。我嘗試用i.likes AS喜歡,它返回。我還加了 –