Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Как вывести фотографии по рейтингу? (https://forum.antichat.xyz/showthread.php?t=174103)

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

m0Hze 28.01.2010 10:50

Цитата:

Сообщение от superboy4
Мне необходим ваш правильно составленный 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 различным фотографиям :(

krypt3r 28.01.2010 11:56

LEFT JOIN

superboy4 28.01.2010 11:56

Можете хоть показать код, где это реализуется?

superboy4 28.01.2010 11:59

С LEFT JOIN всё равно одна фотка выводится

REBUUS 28.01.2010 12:01

может потому что стоит SUM и вот сумму и видает , попробуй группировать по pictures.id

superboy4 28.01.2010 12:04

Цитата:

может потому что стоит SUM и вот сумму и видает , попробуй группировать по pictures.id
не совсем тебя понял. GROUP BY pictures.id?

REBUUS 28.01.2010 12:09

да, в таблице рейтинга, там же у тебя записей много ? или у тебя для каждой картинки одна запись? если так то не надо группировать

REBUUS 28.01.2010 12:12

еще можешь попробовать сделать в вложенном селекте, стачало выполни в одном все арифметические действия и получи пока все записи, а потом в другом выбери их в отсортированный варианте , просто я сам в сложных запросах не сильно разбираюсь, могу только советы дать :)

superboy4 28.01.2010 12:12

у мну несколько записей в таблице рейтингов, т.е для какой-то картинки таблицы pictures есть к примеру 3 записи в таблице ratings

REBUUS 28.01.2010 12:53

думаю нужен вложенный селекс в внутренно группируешь по по ид куртинки и суммируешь рейтинг а во внешнем уже выводишь в нужнем порядке, я не знаю как правильно синтаксический это написать, а то бы написал

deedoc 28.01.2010 15:09

Поля таблицы 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 у одной картинки больше, чем у другой, то она "круче"... или у тебя по другому реализован подсчет рейтинга?


Время: 03:58