2013-11-22 36 views
-2

我正在爲班級作業創建一個迷你論壇,並希望根據用戶標識返回針對特定主題發表的評論數(該頁面是「我的主題」頁面) 。SQL在RIGHT OUTER JOIN上返回num_rows

SQL是:

SELECT * 
FROM topic 
    LEFT OUTER JOIN user ON topic.user_id = user.user_id 
    RIGHT OUTER JOIN comment ON topic.topic_id = comment.topic_id 
    INNER JOIN avatar ON user.user_avatar = avatar.avatar_id 
WHERE user.user_id=1 

凡由$_SESSION返回的用戶ID,但對這個問題的緣故,我在1

設置我的問題是,在SQL查詢只返回有評論的主題。我希望列出所有主題,而不管是否對它們進行了評論,並且還能夠返回評論表中相應行的數量。任何有關我的SQL錯誤的建議都將不勝感激!

編輯:無視頭像的東西,這只是一個額外的查詢,顯示用戶的化身(明顯,但認爲我應該提到的是)

+2

也許是因爲你是正確的外部加入它? – SQLMason

+0

如果您的where子句約束位於用戶標識上,爲什麼左側將用戶連接到主題而不是內部連接? – amaster

+0

@ amaster507,因爲我想獲得用戶發佈的所有主題... – fluxcapacitor

回答

0

你能試試嗎?

SELECT * 
FROM topic 
    INNER JOIN user ON topic.user_id = user.user_id 
    INNER JOIN avatar ON user.user_avatar = avatar.avatar_id 
    LEFT OUTER JOIN comment ON topic.topic_id = comment.topic_id 
WHERE user.user_id=1 
+0

很高興你編輯了這個:)左外連接是正確的。我想問他爲什麼他是INNER加盟他正在加入的一張桌子上。 – SQLMason

+0

謝謝你已經嘗試過,而且我確實得到了所有的主題,不管是否有評論。不過,我現在認爲我實際上需要在評論表上使用COUNT()。 – fluxcapacitor

+0

如果將上面的左外連接更改爲此? ... LEFT OUTER JOIN(選擇topic_id,COUNT(*)從評論CNT其中USER_ID = 1組由topic_id)作爲commentcnt ON topic.topic_id = commentcnt.topic_id ... –