Получить все из одного стола и COUNT из другого - PullRequest
3 голосов
/ 13 мая 2011

K, поэтому у меня есть две таблицы:

categories
+----+----------+
| id | slug     |
+----+----------+
| 1  | billing  |
| 2  | security |
| 3  | people   |
| 4  | privacy  |
| 5  | messages |
+----+----------+

categories_questions
+------------------+-------------+
| id | question_id | category_id |
+------------------+-------------+
| 1  |           1 |           2 |
| 2  |           2 |           5 |
| 3  |           3 |           2 |
| 4  |           4 |           4 |
| 5  |           4 |           2 |
| 6  |           5 |           4 |
+------------------+-------------+

Я хочу получить все из категорий и посчитать количество вопросов (question_id) по каждой категории.

Скажем, перваякатегория, биллинг, будет иметь 1 вопрос, а второй, безопасность, будет иметь 3 вопроса.

Я пробовал это:

SELECT categories.*, count(categories_questions.id) AS numberOfQuestions
FROM categories
INNER JOIN categories_questions
ON categories.id = categories_questions.category_id

Ответы [ 3 ]

8 голосов
/ 13 мая 2011

Вы хотите сделать это:

SELECT categories.id, max(categories.slug), count(categories_questions.id) AS numberOfQuestions
FROM categories
LEFT JOIN categories_questions
ON categories.id = categories_questions.category_id
group by categories.id

LEFT JOIN убедится, что категории без вопросов будут перечислены с количеством = 0

0 голосов
/ 23 февраля 2017

String p_query = "выберите c. *, Количество (o.id) из CustomerTable c, OrderTable o, где c.id = o.customerId GROUP BY c.id";

Надеюсь, это поможет вам. Спасибо

0 голосов
/ 13 мая 2011

Это должно сделать это ... вам нужно что-то агрегировать, прежде чем считать:

SELECT categories.*, COUNT(categories_questions.id) AS numberOfQuestions FROM categories
INNER JOIN categories_questions
ON categories.id = categories_questions.category_id
GROUP BY categories.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...