2012-07-23 70 views
0

我有2個表:評論&博客加入一個計數的查詢

博客具有以下字段:ID(唯一鍵),標題,作者,體,日期,IMG,imgdes,標籤

評論:鍵(獨特的關鍵),postid(與博客的ID相關),名稱,電子郵件,日期,消息

我試圖顯示我的博客帖子和每條帖子上的評論數。

所以我嘗試「計數(帖子ID),其中帖子ID = ID」

我得到的東西的工作,但它的周圍有1個評論這不會工作基礎,但是這是它:

SELECT a.postid,c.author,c.title, c.id,c.body,c.date,c.pic, c.tags, c.imgdesc, 
COUNT(*) AS num_comments FROM comments a LEFT JOIN blog c ON c.id = a.postid 
GROUP BY c.id order by id DESC" 

再次這隻有當一切都有評論,我得到原因,但我不知道如何實現我想要的。

爲了把它全部在那裏我有:

$sql="***(help 1 of 2) what to set the query to****" 
$query = mysql_query($sql) or die(mysql_error()); 
    <?php do{ ?> 
    <html stuff here> 
    <?php echo $blog['title']?><br> 
    <?php echo $blog['*******(help 2 of 2) # of comments display here******'] 
    <?php } while($blog = mysql_fetch_assoc($sql));?> 

我敢肯定,這是一個很容易加入,但沒有線索感謝我有!

回答

1

使用該查詢它可能如果你希望所有的博客文章,那麼它應該是在左連接的左側爲你的作品

SELECT a.postid,c.author,c.title, c.id,c.body,c.date,c.pic, c.tags, c.imgdesc, COUNT(a.key) AS num_comments FROM blog c left outer join comments a ON a.postid = c.id GROUP BY c.id order by id DESC 
+0

介意解釋?作爲我請求感謝您閱讀的問題 – 2012-07-23 05:06:56

+0

閱讀左加入在MySQL中工作,你可以瞭解然後。也評爲ans upvote,如果它的作品:)。 – 2012-07-23 05:10:25

+0

大聲笑的鏈接你明白了! – 2012-07-23 05:13:47

0

我認爲這個問題在於你寫:FROM comments a LEFT JOIN blog c ON c.id = a.postid GROUP BY c.id order by id DESC"

comments ablog c似乎不正確的引用。

應該是FROM comments.a LEFT JOIN blog.c ON ...?

+0

沒有這個查詢的工作,因爲它想得我試着做一個新的查詢,可以計算postid,它就像blog.Id一樣,並將這個數字添加到表中,加入 – 2012-07-23 04:59:07

1

+0

如果我把它移動到如何工作計數的連接的例子,我非常不好? – 2012-07-23 05:01:00

+0

「我有一些工作,但它的基礎上有1評論不會工作」。註釋表位於左連接的右側時,您遇到此問題。左連接的工作方式如下:它將左表上的每條記錄與右表上的匹配記錄進行映射,並且它仍然顯示左表中沒有匹配記錄的記錄。如果左側有註釋表,那麼即使博客沒有評論,它仍然會顯示計數爲零 – arunmoezhi 2012-07-23 05:16:38

0

您是否試圖計算每個博客中的評論數?如果是的話, SELECT c.postid,count(key) as num_of_comments FROM blog b, comments c WHERE b.id = c.postid GROUP BY c.postid

另一個簡單的辦法: 有您的帖子ID作爲外鍵,你可以得到的意見表中的結果 SELECT postid,count(key) as num_of_comments FROM comments GROUP BY postid