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

У меня есть две таблицы: одна содержит волонтеров, а другая - места проведения. Волонтерам выделяется по одному месту..

Идентификатор таблицы мест (venues.id) помещается в таблицу volunteers в столбце location_id (volunteers.venue_id).

Я знаю, что могу подсчитать количество совпадающих значений в столбце volunteers.venue_id,

SELECT venue_id, COUNT(*) FROM volunteers GROUP BY venue_id

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

таблица: волонтеры - столбцы: id, name, location_id

таблица: места проведения - столбцы: идентификатор, название_ площадки

volunteers.venue_id = venues.id

Я знаю, что это будет какое-то заявление о соединении, поэтому оно будет подсчитывать каждое место встречи, затем сопоставить volunteers.venue_id с venues.id и распечатать venues.venue_name вместе с подсчетом.

Как мне присоединиться к двум таблицам, чтобы распечатать название места проведения и рядом с ним указать количество добровольцев с этим идентификатором места проведения?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
304
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

SELECT venues.venue_name, COUNT(volunteers.*) AS cvolun
  FROM venues
  INNER JOIN volunteers
    ON venues.id = volunteers.venue_id

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

Bill Karwin 22.10.2008 23:43
Ответ принят как подходящий

Это даст вам все места проведения, а те, у кого нет добровольцев, появятся с 0 volunteer_count.

select venues.venue_name, count(*) as volunteer_count
from venues
left outer join volunteers
   on venues.id = volunteers.venue_id
group by venues.venue_name

[EDIT] Я только что понял, что вы просили MySQL. Я не могу вспомнить, использует ли MySQL LEFT JOIN или LEFT OUTER JOIN. Приведенный выше синтаксис подходит для SQLSERVER. Ключевым моментом является внешнее объединение вместо внутреннего, чтобы получить места, где нет добровольцев.

FWIW, как LEFT JOIN, так и LEFT OUTER JOIN работают в MySQL, и оба они работают одинаково.

Bill Karwin 22.10.2008 23:40

Другие вопросы по теме