Код: Выделить всё
SELECT *
FROM cast
ORDER BY cast_characters_id, cast_identities_id, cast_roles_id
cast_characters_id
cast_identities_id
cast_roles_id
1
1
1
1
1
1
1
2
1
1
21
3
3
2
4
4
2
4
4
2
5
5
3
5
53
Как я бы хотелось бы считать по уникальным ролям, а не по ОДНОЙ, исходя из вышеизложенного, роль 1 будет иметь ДВА разных результата, роль 2 будет иметь ОДИН отдельный результат, и роль 3 будет иметь ОДИН отличный результат. Один экземпляр символов_id(3), identities_id(3) и role_id(2) будет проигнорирован, поскольку это произошло только один раз. Итак, я попробовал это и получил:
Код: Выделить всё
SELECT cast_roles_id, COUNT(DISTINCT CONCAT(cast_characters_id, cast_identities_id, cast_roles_id)) AS 'cnt'
FROM cast
GROUP BY cast_roles_id
HAVING cnt > 1;
cast_roles_id
cnt
1
2
2
2
3
1
Очень близко, но похоже, что он подсчитывает всех отдельных персонажей/личности/роли, независимо от количества экземпляров. Действительно, когда я удаляю элемент «иметь» из запроса, я получаю те же результаты, поэтому кажется, что он ничего не делает, хотя и не выдает сообщения об ошибке.
Чего мне не хватает?
Подробнее здесь: https://stackoverflow.com/questions/793 ... one-result
Мобильная версия