2012-03-26 3 views
0

я делаю SQL запрос, чтобы получить значения из БД, структуры БД следующим образом ...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" 

и дает правильные результаты для общих тем, но как я могу получить общее количество должностей для все категории, я abit запутался, пожалуйста, помогите мне написать этот запрос. Благодарю.

ответ

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

+0

Я думаю, что он также ищет количество 'fposts', которые соответствуют' fcats'. Я не использовал mySQL через некоторое время, но я думал, что он принимает sub-запрос в инструкции SELECT, который возвращает количество столбцов, которые соответствуют. – jheep

+0

@seoppc попробовал мой исправленный код, я надеюсь, что он работает ... я не могу попробовать – silly

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 

не уверен, если это правильный синтаксис, обновленный код и другие ответы, чтобы попытаться ответить на ваш запрос для двух сумм.

Смежные вопросы