Вычисление того, какой деятельности назначен каждый человек

0

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

SELECT child_fname, activity_id
FROM Child
LEFT JOIN Activity
ON Activity.ActivityID=activity.activity_id
ORDER BY Child.child_fname;

и мои таблицы таковы:

Детский стол

  • child_firstname
  • child_secondname
  • child_age

Деятельность

  • activity_id
  • ACTIVITY_NAME
  • activity_price

ChildActivity

  • child_id
  • activity_id

Я ищу что-то вроде этого

  • [Название] [Количество действий]
  • Сэм Смит 5
  • Рейчел Смит 4

Я попытался использовать JOIN, но мой запрос не обновляется для новых данных

  • 0
    Можете ли вы объяснить, что вы подразумеваете под последним предложением? Почему данный запрос JOIN не «обновляет новые данные»?
Теги:
database

2 ответа

0
Лучший ответ

Это то, что я думаю, что ты хочешь

SELECT child_fname as Name, count(activity_id) as 'Number of Activities'
FROM Child
LEFT JOIN ChildActivity
ON ChildActivity.child_id=Child.child_id
GROUP BY Child.child_id
ORDER BY COUNT(activity_id) DESC;

Дело в том, что вы хотите присоединиться к Child with ChildActivity и group by Child, так что для каждой записи в Child вы получаете количество действий.

  • 0
    Ах! Извините, да, у меня есть child_id, который является основным полем в таблице Child
  • 0
    Я отредактировал запрос, чтобы отразить это
Показать ещё 3 комментария
0

Использование INNER JOIN

SELECT Child.child_firstname, COUNT(Activity.activity_id)
FROM Child
INNER JOIN Activity ON Activity.activity_id=ChildActivity.activity_id
INNER JOIN ChildActivity ON ChildActivity.child_id=Child.child_id
ORDER BY Child.child_firstname;

Ps: проверьте имена столбцов и таблицы, пожалуйста.

Пример SQL Inner-join с 3 таблицами?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню