2014-06-09 53 views
0

你好,我在Sql中很新,我正在重建一個簡單的PHP儀表板。我有MySQL數據庫,我有這個問題。從已刪除的用戶獲取帖子SQL函數

public function get_posts($thread_id, $start, $limit) 
    { 
     $sql = "SELECT a.*, b.username, b.id as user_id FROM ".TBL_POSTS." a, ".TBL_USERS." b 
       WHERE a.thread_id = ".$thread_id." AND a.author_id = b.id 
       ORDER BY a.date_add ASC LIMIT ".$start.", ".$limit; 
     return $this->db->query($sql)->result(); 

可能發生的情況是由於用戶被刪除,a.author id不等於b.id。我需要改進我的sql以顯示已刪除用戶的帖子,並顯示一些帖子是由已刪除用戶的信息。

謝謝

+0

這包含的信息太少,我們無法提供幫助。這些表是什麼樣子的,你試過了什麼,期望的結果是什麼(因爲如果刪除了b,它不能選擇b.username)等等。 – EWit

回答

1

嘗試下面的代碼。它選擇表b中的所有行並查找表a中的所有匹配項,或者如果在a中沒有對應的行,則將所有匹配項放在NULL的所有字段中。

SELECT a.*, b.username, b.id as user_id FROM ".TBL_POSTS." a LEFT JOIN ".TBL_USERS." b 
      ON a.author_id = b.id 
      WHERE a.thread_id = ".$thread_id 
+0

實際上它有幫助,但是用LEFT JOIN,謝謝 – user3723087

+0

對不起,改變了向左連接。不明白哪張表丟失了數據。 –