2014-03-29 123 views
1

我有三個表:評論,用戶和評論幫助。訪問SQL LEFT JOIN不返回結果

用戶可以提交幾條評論,這些評論存儲在評論表中。

評論幫助有三列:UserID,CommentID和一個「有用的」布爾值。如果每個用戶覺得有用,每個用戶都可以指出每個評論,這將在CommentsHelpfulness表中創建一個條目。

我想要一個查詢,給我所有的評論ID,用提交它的用戶的名字,並顯示當前登錄的用戶是否覺得有幫助,沒有發現它有幫助,或沒有說什麼。因此,當前用戶沒有表達他的意見的評論的ID仍然應該輸出,而沒有有用的布爾值。

對我來說,這聽起來像它應該這樣使用左來完成連接:

SELECT Comments.ID, Users.Nom, CommentsHelpfulness.Helpful FROM (Comments INNER JOIN Users ON Comments.UserID = Users.ID) LEFT JOIN CommentsHelpfulness ON (CommentsHelpfulness.CommentID = Comments.ID AND (CommentsHelpfulness.UserID = ?))

不幸的是,這並不輸出評論的ID沒有在CommentsHelpfulness表中的條目。爲什麼這不起作用?是因爲Access嗎?

回答

0

我認爲問題是inner join,而不是left join

嘗試刪除該表:

SELECT c.ID, ch.Helpful 
FROM Comments as c LEFT JOIN 
    CommentsHelpfulness as ch 
    ON ch.CommentID = c.ID AND 
     ch.UserID = ? 
+0

對不起,我試圖讓查詢儘可能短,我的問題,把一些字段的了,我需要。我實際上也需要用戶表中的用戶名。我編輯了我的問題。 – user3475924

+0

但是你說得對,如果我把INNER JOIN拿出來就行了。我只需要找到一種方法來從Users表中獲取我需要的數據。 – user3475924

+0

事實證明,問題只是我添加參數的方式,查詢實際上工作正常。謝謝您的幫助! – user3475924

0
select c.id, c.Nom, d.Helpful from (
select a.ID, b.Nom from Comments a left join Users b 
on a.UserID = b.ID) c left join CommentsHelpfulness d 
on d.CommentID = c.ID;