fuck_ask
@fuck_ask
web программист

Как посчитать какая по счету запись в базе mysql, при условии и сортировки?

Делаю топ и немного вошел в ступор с одной задачей.
Вот основной запрос
SELECT ID, (pm.meta_value+0) AS reating
	FROM $wpdb->posts p
		LEFT JOIN $wpdb->postmeta pm ON (pm.post_id = p.ID)
	WHERE pm.meta_key = 'reating_num' 
		AND p.post_type = 'book'
		AND p.post_status = 'publish'
	ORDER BY reating DESC

Вывод
Array ( [0] => stdClass Object ( [ID] => 349 [reating] => 21 ) [1] => stdClass Object ( [ID] => 593 [reating] => 0 ) )

В коде выводяться записи учитывая количество рейтинга, у кого больше тот выше. Но как посчитать на каком конкретном месте находится запись в топе добавив ID записи и его рейтинг?
Не ID записи а именно посчитать сколько записей было до нужной, которая нашлась по условию
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
fuck_ask
@fuck_ask Автор вопроса
web программист
Мой вариант, но подсчитывает не оч точно, из-за критерий. Не уверен на счет производительности.
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
INNER JOIN wp_postmeta
ON (wp_posts.ID = wp_postmeta.post_id )
INNER JOIN wp_postmeta AS mt1
ON ( wp_posts.ID = mt1.post_id )
INNER JOIN wp_postmeta AS mt2
ON ( wp_posts.ID = mt2.post_id )
WHERE 1=1
AND ( wp_postmeta.meta_key = '_wpcr_rating_stars_count'
AND mt1.meta_key = '_wpcr_rating_stars_avg'
AND mt2.meta_key = 'post_views_count' )
AND wp_posts.post_type = 'book'
AND wp_posts.post_status = 'publish'

GROUP BY wp_posts.ID
ORDER BY wp_postmeta.meta_value DESC, mt1.meta_value DESC, mt2.meta_value  DESC

foreach( $pageposts as $postnum ){
	$i++;
	if($postnum->ID == $id){
		 break;
	}
}

Если есть другие варианты, отпишите пожалуйста.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега SQL
Седой и строгий
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Где было? Если запись по условию не проходит, то она и не попадает в выборку. Соответственно, в выборке все записи удовлетворяют условию и перед ними нет других записей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы