2015-04-05 29 views
0

我有4個表:從多表中選擇並返回所有

posts [post_id post_title post_body post_date post_by post_accepted] 
users [user_id user_name user_pw] 
comments [comment_id comment_user comment_co comment_post comment_date] 
categories [categorie_id categorie_name] 

每個表包含數據的所有數據都屬於表的帖子

categories<-posts 
posts<-users 
posts<-comments<-users 

我想獲得ID POST_ID職位,得到它的意見和誰發佈它,並得到類別的名稱和編號

我試過但我得到的帖子,但不是所有的意見,或者如果帖子劑量沒有評論它不會出現

這是我的SQL查詢

SELECT COUNT(comment_id),comments.*,categories.*,users.*,posts.* 
FROM posts 
JOIN categories on (posts.post_id = categories.categorie_id) 
JOIN users on (posts.post_by = users.user_id) 
LEFT JOIN comments on (posts.post_id = comments.comment_post) 
WHERE posts.post_id='34' 
AND posts.post_accepted = '1' ; 

,並感謝

+0

你必須使用左外連接徵求意見。內部連接將需要在表中有行。如果有多個註釋,你也會得到多行註釋,而count會得到1.你不能像這樣在一行中得到多行。 – 2015-04-05 11:07:06

+0

還要考慮列的命名。 Post_by不是用於指向用戶表的好名稱,或者是使用單獨的類別表(每個帖子只保存一個值)。如果總是存在1-1的關係,那些屬於同一張表。如果表是用戶,則該列應該只是名稱,而不是user_name,因爲它明顯是什麼名稱。 post_title,post_body等相同 – 2015-04-05 11:12:21

+0

謝謝@SamiKuhmonen我創建函數來獲取評論計數並將它們加入到數組 – D34DlyM4N 2015-04-05 11:27:09

回答

0

嘗試通過users.id添加組到您的查詢

+0

爲什麼我使用users.id我想從post_id的post表達式中獲得所有意見,如果post' t有評論我希望它沒有評論返回帖子 – D34DlyM4N 2015-04-05 11:11:17