Сумма в подзапросе

Ckorpion
Дата: 22.12.2012 15:10:07
Есть таблица `tlists` в столбце `users` хранятся id пользователей через запятую.
Во второй таблице `tusers` каждому id соответствует значение `rate`.
Нужно вывести строки из таблице `tlists` все значения с дополнительной колонкой, в которой должна отображаться сумма `rate` всех перечисленных пользователей из колонки `users`.

Вот мой запрос;
SELECT *,(SELECT SUM(`rate`) FROM `tusers` WHERE `uid` IN (`tlists`.`users`)) AS `r` FROM `tlists`

В этом запросе в доп. колонке отображается сумма всего одной строки
Если SUM заменить на COUNT в доп колонке везде будет выводится 1, хотя в `users` разные значения и их количество

Если взять отдельно запрос:
SELECT SUM(`rate`) FROM `tusers` WHERE `uid` IN (1,2,3)
Отображается правильно

Проверял `tlists`.`users`, выводит правильный результат.

В чем проблема?
tanglir
Дата: 22.12.2012 15:39:54
Ckorpion
хранятся id пользователей через запятую
Читать тут 8434456
Ckorpion
Дата: 22.12.2012 16:45:19
Там решение не совсем моей проблемы.
Мне интересно, почему в под запросе в IN () обрабатывается только 1 результат из основного запроса
javajdbc
Дата: 22.12.2012 17:43:02
Ckorpion
Там решение не совсем моей проблемы.
Мне интересно, почему в под запросе в IN () обрабатывается только 1 результат из основного запроса


потому что ИН ждет список чисел (1,2,3) а получает ОДНУ строчку ('1,2,3').
Строчка переводитя в число, по правилам перевода берется первое
похожее на число значение слева, т.е. '1,2,3' читается как 1.
Ckorpion
Дата: 22.12.2012 21:43:23
javajdbc,
есть какая-нибудь функция для преобразования данной строки в список?
tanglir
Дата: 22.12.2012 22:35:32
Ckorpion
есть какая-нибудь функция для преобразования данной строки в список?
Ссылка в моём предыдущем посте. Вы её всё-таки не читали :(
Ckorpion
Дата: 22.12.2012 23:39:05
tanglir,
Я пробовал с помощью SUBSTRING_INDEX. Добиться верного результата не смог.

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

Можно простой пример