Как получить количество дублированных значений и объединить таблицу, чтобы получить имя каждого значения? - PullRequest
2 голосов
/ 22 октября 2008

У меня есть две таблицы, одна из которых содержит добровольцев, а другая содержит места проведения. Добровольцам назначается одно место проведения .

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

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

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

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

таблица: добровольцы - столбцы: id, name, venue_id

таблица: места - столбцы: id, имя места

волонтеры.venue_id = venues.id

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

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

Ответы [ 2 ]

4 голосов
/ 22 октября 2008

Это даст вам все места, где те, у кого нет добровольцев, появятся с 0 добровольцами_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

[ПРАВИТЬ] Я только что понял, что вы спросили MySQL. Я не могу вспомнить, использует ли MySQL LEFT JOIN или LEFT OUTER JOIN. Синтаксис выше будет правильным для SQLSERVER. Ключевым моментом является внешнее объединение, а не внутреннее объединение, чтобы получить места, где нет добровольцев.

1 голос
/ 22 октября 2008
SELECT venues.venue_name, COUNT(volunteers.*) AS cvolun
  FROM venues
  INNER JOIN volunteers
    ON venues.id = volunteers.venue_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...