2010-12-08 187 views
0

我試圖顯示某個類別中的所有板,但是我遇到了SQL查詢的問題。我希望它能夠瀏覽某個類別中的所有帖子,從中獲取用戶標識,從users表中找到用戶名,然後計算帖子中有多少條評論。數據庫關係

這裏的表和一些字段:

boards 
    board_id 

comments - the replies to the post 
    comment_id 

discussion - the posts 
    discussion_id 
    discussion_user 
    discussion_board 
    discussion_time 
    discussion_title 

users 
    id 
    username  

本來我有這樣的:

SELECT 
    a.discussion_id, 
    a.discussion_time, 
    a.discussion_title, 
    a.discussion_type, 
    a.discussion_media, 
    b.username, 
    Count(c.comment_id) AS totalComments 
FROM 
    discussion a, 
    users b, 
    comments c 
WHERE 
    discussion_board='".$board['board_id']."' AND 
    b.id=a.discussion_user AND 
    c.comment_post=a.discussion_id 

但它只能說明後,如果能找到註釋。

我該如何解決這個問題?我仍然在學習更多關於SQL和數據庫的關係。左連接?

+1

http://stackoverflow.com/questions/419375/sql-join-differences – jball 2010-12-08 18:39:49

回答

0

使用SQL-92連接語法(您明確使用join)關鍵字進行連接時,會使查詢更具可讀性,尤其是在開始添加外連接之後。

是的,你想要一個left join到你的評論表。

1
SELECT a.discussion_id, a.discussion_time, a.discussion_title, a.discussion_type, a.discussion_media, b.username, Count(c.comment_id) AS totalComments FROM discussion a, 
left join users b on b.id=a.discussion_user 
left join comments c on c.comment_post=a.discussion_id WHERE discussion_board='".$board['board_id']."'" 
3

左連接是去了,因爲他們會從拉的一切,不管是否有在B或C的相應條目的方式。有關連接(以及一般SQL)的更多信息,請參見here