Просмотр полной версии : Как вывести фотографии по рейтингу?
superboy4
28.01.2010, 10:14
Мне необходим ваш правильно составленный sql-запрос!
Есть таблица pictures и ratings.
Поля таблицы ratings ---> id, picture_id, rating, user_who_made_rating.
Давайте!
superboy4
28.01.2010, 10:37
up
Мне необходим ваш правильно составленный sql-запрос!
Есть таблица pictures и ratings.
Поля таблицы ratings ---> id, picture_id, rating, user_who_made_rating.
Давайте!
А какие поля в пиктрес нам знать не надо так то.И что именно тебе вытащить нужно?
Правильно поставленный вопрос - залог хорошего ответа.
superboy4
28.01.2010, 10:53
pictures содержит поля --> id,picture_file_name,picture_content_type
Нужно отобразить топ 100 картинок с наиболее высоким рейтингом.
superboy4
28.01.2010, 11:26
SELECT * FROM pictures INNER JOIN ratings ON ratings.picture_id=pictures.id ORDER BY SUM(ratings.rating)/COUNT(ratings.rating)
выводит одну единственную картинку, в то время как в таблице ratings, рейтинги принадлежат 3 различным фотографиям :(
superboy4
28.01.2010, 11:56
Можете хоть показать код, где это реализуется?
superboy4
28.01.2010, 11:59
С LEFT JOIN всё равно одна фотка выводится
может потому что стоит SUM и вот сумму и видает , попробуй группировать по pictures.id
superboy4
28.01.2010, 12:04
может потому что стоит SUM и вот сумму и видает , попробуй группировать по pictures.id
не совсем тебя понял. GROUP BY pictures.id?
да, в таблице рейтинга, там же у тебя записей много ? или у тебя для каждой картинки одна запись? если так то не надо группировать
еще можешь попробовать сделать в вложенном селекте, стачало выполни в одном все арифметические действия и получи пока все записи, а потом в другом выбери их в отсортированный варианте , просто я сам в сложных запросах не сильно разбираюсь, могу только советы дать :)
superboy4
28.01.2010, 12:12
у мну несколько записей в таблице рейтингов, т.е для какой-то картинки таблицы pictures есть к примеру 3 записи в таблице ratings
думаю нужен вложенный селекс в внутренно группируешь по по ид куртинки и суммируешь рейтинг а во внешнем уже выводишь в нужнем порядке, я не знаю как правильно синтаксический это написать, а то бы написал
Поля таблицы ratings ---> id, picture_id, rating, user_who_made_rating.
pictures содержит поля --> id,picture_file_name,picture_content_type
SELECT TOP 100 p.picture_file_name FROM Pictures p
JOIN Ratings r ON p.id = r.picture_id
ORDER BY r.rating DESC;
вернет тебе 100 самых "рейтинговых" картинок (а именно путей к ним)
SELECT TOP 100 * FROM Pictures p
JOIN Ratings r ON p.id = r.picture_id
ORDER BY r.rating DESC;
а вот так вернутся все данные из этих двух таблиц
еще раз перечиталд ветку. так и не понял, зачем тебе кака-ято арифметика впринципе? у тебя есть данные о том, какой рейтинг у картинки (ratings.rating). если rating у одной картинки больше, чем у другой, то она "круче"... или у тебя по другому реализован подсчет рейтинга?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot