2013-11-25 4 views
0

Привет, у меня проблемы с подсчетами членов группы. Запрос, который у меня есть, теперь возвращает одну строку для каждой группы, частью которой является данный пользователь. Но я хочу, чтобы количество участников появилось. Три таблицы им, используя выглядит так:SQLite count членов в группе

enter image description here

Вот им запрос работает с: ВИскать редактировать!

Если я не укажу часть кода COUNT, я получаю 2 группы, которых я ожидаю. Но когда я добавляю в COUNT, он возвращает только одну группу с членами = 2. Поэтому кажется, что она подсчитывается, но я не уверен, что это правильный ответ.

Заранее благодарен!

+0

похоже, что вам не хватает группы по предложению – Strawberry

+0

Я попробовал GROUP BY gp.group_id_foreign. Который возвращает две группы, но каждый с номером члена 1, что не является правильным результатом. –

+1

Я предполагаю, что вы хотите группировать g.something. Если вы все еще пытаетесь опубликовать надлежащие DDL и/или sqlfiddle ВМЕСТЕ С ЖЕСТКОЙ РЕЗУЛЬТАТОМ – Strawberry

ответ

1

Предполагая, что вы после общего количества участников в каждой группе, с которой пользователь 1 аффилирован ...

SELECT gu1.group_id_foreign 
    , COUNT(*) ttl 
    FROM group_participants gu1 
    JOIN group_participants gu2 
    ON gu2.group_id_foreign = gu1.group_id_foreign 
WHERE gu1.user_id_foreign = 1 
GROUP 
    BY gu1.group_id_foreign; 

http://sqlfiddle.com/#!2/821ad/1

Кстати, колонка _id в таблице group_participants, как представляется, служить нет цели, и, к моему образу мышления, вы называете конвенцию сумасшедшим! ;-)

+0

_id должен только действовать как первичный ключ. Я даже не знаю, должен ли я использовать его, но да. Это не будет больно иметь его :) И спасибо. Код, который вы опубликовали, работает! –

+0

У вас уже есть вполне адекватный естественный ключ. Вы должны установить это как PRIAMRY. ;-) – Strawberry

+0

Хмм ни один пользователь_ид_игр или group_id_foreign не является уникальным, как вы можете видеть в скрипке, так что это не сработает. Мне нужно _id –

Смежные вопросы