|
|
|
| Здравствуйте. У меня имеется таблица с пользователями вида:
ID пользователя | ID пригласившего | ...
Мне необходимо для определенного ID пользователя посчитать количество строк у которых ID пригласившего равен этому ID (определенному), это будет рефералы первого уровня. И так же само второго. То есть пройтись по всем рефералам первого уровня и посчитать скоко у них рефералов и сложить.
Ну обычная пирамида в партнерской программе. Помогите, как реализовать? Вложенным запросом как то не по Харьковски. | |
|
|
|
|
|
|
|
для: pavluxa09
(09.07.2012 в 15:33)
| | >Мне необходимо для определенного ID пользователя посчитать количество строк у которых
>ID пригласившего равен этому ID (определенному)
Не очень понятно, цель какая? Определить к-во рефералов или ID пользователя? | |
|
|
|
|
|
|
|
для: cheops
(09.07.2012 в 16:12)
| | Определить количество рефералов второго уровня | |
|
|
|
|
|
|
|
для: pavluxa09
(09.07.2012 в 15:33)
| | > Вложенным запросом как то не по Харьковски.
Иначе никак. | |
|
|
|
|
|
|
|
для: Sfinks
(09.07.2012 в 19:30)
| | Может можно как то выбрать рефералов первого уровня их засунуть в массив а по этому массиву посчитать скоко есть рефералов у людей которые находится в этом массиве. Вообщем на php задача реализовуется без проблем, но где то встречал что на SQL тоже можно при помощи какого-то оператора IN <> | |
|
|
|
|
|
|
|
для: pavluxa09
(09.07.2012 в 19:37)
| | UP | |
|
|
|
|
|
|
|
для: pavluxa09
(09.07.2012 в 19:37)
| | С помощью IN вы посчитаете общее количество рефералов второго уровня, но не для каждого пользователя. Для каждого - это только в цикле. Для MySQL это реализуемо только на клиенте. | |
|
|
|
|
|
|
|
для: Sfinks
(17.07.2012 в 00:09)
| | SELECT referrerID FROM `table` WHERE `ID` = 'нужный ID у кото считаем кол-во рефералов второго уровня'
В результате запроса получаем список ID рефералов первого уровня, теперь пишем SELECT COUNT(*) FROM `Table` WHERE `ID` есть в списке полученный ранее.
Как это записать правильно? | |
|
|
|
|
|
|
|
для: pavluxa09
(17.07.2012 в 16:16)
| | так и записать: ... where `id` IN ( список полученных ранее ИД через запятую ) | |
|
|
|
|
|
|
|
для: Sfinks
(17.07.2012 в 16:28)
| | именно то что я хотел ) Спасибо ) | |
|
|
|