2012-03-26 75 views
0

我在做SQL查詢來獲取從DB值,DB結構如下...MySQL查詢統計

fcats

| id | title | section | 
+----+--------+---------+ 
| 1 | test | gd  | 
+----+--------+---------+ 

ftopics

| id | title | cat_id | 
+----+--------+---------+ 
| 1 | test1 | 1  | 
+----+--------+---------+ 

fposts

| id | post | topic_id | 
+----+-------+----------+ 
| 1 | post | 1  | 
+----+-------+----------+ 

我想主題和給定類職位的總人數,並使用下面的查詢......

SELECT id, title (SELECT count(id) FROM ftopics WHERE cat_id = id) AS total_topics FROM fcats WHERE section = "gd" 

,並讓正確的結果總的話題,但我怎樣才能獲得職位總數所有類別,我有點迷惑,請幫我寫這個查詢。謝謝。

回答

0

試試這個:

SELECT 
    t.id, 
    t.title, 
    COUNT(f.id) + COUNT(p.id) AS total 
FROM fcats t 
LEFT OUTER JOIN ftopics f 
    ON f.cat_id = t.id 
LEFT OUTER JOIN fposts p 
    ON p.cat_id = t.id 
WHERE t.section = "gd" 
GROUP BY t.id, t.title 
+1

但我怎麼能得到給定的部分/類別的職位總數? – seoppc 2012-03-26 21:04:58

+0

我認爲他也在尋找匹配'fcats'的'fposts'的數量。我有一段時間沒有使用mySQL,但我認爲它接受'SELECT'語句中的子查詢,它將返回匹配的列數。 – jheep 2012-03-26 21:06:49

+0

@seoppc試試我更正的代碼,我希望它能正常工作......我不能嘗試 – silly 2012-03-26 21:07:08

0
SELECT 
    t.id, 
    t.title, 
COUNT(f.id) AS total_topics, 
(SELECT COUNT(p.id) FROM fposts WHERE topic_id = t.id) total_posts 
FROM fcats t 
INNER JOIN ftopics f 
    ON f.cat_id = t.id 

WHERE t.section = "gd" 
GROUP BY t.id, t.title 

不知道這是正確的語法,更新其他答案代碼嘗試回答你的兩個總計請求。