- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
// выбираем случайные категории
$sql="
SELECT `id`
FROM `category`
WHERE id>=(SELECT ROUND(RAND()*(SELECT COUNT(*) FROM `stat`)))
limit ".$this->limit;
$arr=Yii::app()->db->createCommand($sql)->query();
// в nn будем хранить строку вида a,b,...,e где abc -цифры
// позже мы скормим это в условие для sql запроса, это самый простой способ
$nn='';
foreach ($arr as $val){
$nn.=$val['id'].',';
}
//добавим в конце строки "end", чтобы избавиться от лишней запятой
$nn.='END';
// выбираем пользователей из случайных категории, сгенерированных ранее
$sql="
SELECT name, category_id, COUNT(category_id) AS total
FROM `stat`
JOIN `category` as C
WHERE C.id=category_id AND C.id in (".str_replace(',END','',$nn).")
GROUP BY category_id
limit ".$this->limit;
$arr=Yii::app()->db->createCommand($sql)->query();
Сказочный говнокод. Сохранены авторские комментарии.
DBdev 27.11.2013 16:18 # +2
...
str_replace(',END','',$nn)
А ещё можно вместо END использовать SMURF или кличку домашнего питомца.
anonimb84a2f6fd141 03.12.2013 17:37 # −2
Lure Of Chaos 27.11.2013 22:02 # +1
sslobodyanyuk 28.11.2013 17:34 # 0
Nemoden 03.12.2013 11:10 # +1
planaric 16.12.2013 18:01 # 0
Индусы такие индусы :)