используя сумму и группировать по и ifnull - PullRequest
1 голос
/ 21 января 2011

У меня есть таблица причитающихся денег вместе с идентификатором команды (например, 1,2,3)

У меня есть другая таблица, которая дает имя этим идентификаторам команды (поэтому 1 может относиться к Team1, 2 может относиться к джокерам Джона и т. Д.)

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

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

name            total 
.....................
team1            100  
John's jokers   1000  
99                50

, где 99 - идентификатор команды, потому что не было имени команды и был нулевой подарок.

Я попытался использовать ifnull (columnName, teamID), но это не удалось при использовании предложения sum.

Может кто-нибудь помочь с этой проблемой, пожалуйста

1 Ответ

3 голосов
/ 21 января 2011

Я думаю, что ifnull () используется следующим образом:

select ifnull(teams.team_name, teams.team_id) from teams;

Так что в этом случае он пытается получить имя команды, а если он возвращается нулевым, он вместо этого использует идентификатор команды.В этом случае ваш запрос будет выглядеть следующим образом:

select ifnull(teams.team_name, owing.team_id), sum(amount_owed)
  from owing left join teams on owing.team_id = teams.id
 group by owing.team_id

Убедитесь, что группа запрашивает поле идентификатора, а не команды, в противном случае вы будете группировать по пустому полю.

Решает ли это проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...