2011-08-21 13 views
1

我們試圖簡單地列出相關用戶尚未加入的表中最近的線程。獲取用戶未加入的最近線程

下面的代碼無法正常工作(同時顯示了新主題和用戶中已經加入線程),但顯示了我們正在使用的表:

SELECT t.*, jt.* 
FROM thread t 
INNER JOIN joined_threads jt ON jt.thread_id = t.unique_id 
WHERE t.owner != '$user_id' 
AND jt.saved_by != '$user_id' 
GROUP BY t.unique_id 

使用的表:

THREAD: 
unique_id 
owner 
title 
content 
date 

JOINED_THREADS: 
saved_by 
thread_id 

我想這很容易讓你最:)

+0

任何具體的問題,你有什麼問題? –

+0

只是不顯示正確的記錄。它顯示了我加入的兩個線程以及我沒有加入的新線程。 –

+0

不確定,我不是sql專家,但我認爲問題在於,由於內部聯接,每個線程只能獲得一個joined_thread記錄 –

回答

1

如果我知道你需要什麼

SELECT t.*, jt.* 
FROM thread t 
LEFT JOIN joined_threads jt ON jt.thread_id = t.unique_id AND jt.saved_by = '$user_id' 
WHERE t.owner <> '$user_id' AND jt.thread_id is NULL 
GROUP BY t.unique_id 

(未測試)。順便說一句,你需要jt。*,將永遠是NULL

+0

完美地工作。非常感謝你! –

1
SELECT t.* 
FROM thread t 
WHERE t.owner <> '$user_id' 
    AND NOT EXISTS 
     (SELECT * 
     FROM joined_threads jt 
     WHERE jt.thread_id = t.unique_id 
      AND jt.saved_by = '$user_id' 
    )