Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Помогите составить запрос
Покинул форум
Сообщений всего: 4
Дата рег-ции: Нояб. 2006
Помог: 0 раз(а)
Вобщем, задача такая - вывести рейтинг песен, за которые голосовали пользователи.
1. Есть таблица с песнями
2. Есть таблица с голосами, в которой след поля: голос (от -2 до +2 за песню), id пользователя, id песни, дата голосования.
Задача - отсортировать песни по сумме голосов в таблице номер 2. Сам понимаю, что ничего сложного, но вся загвоздка в том, что один пользователь может проголосовать несколько раз за одну и туже песню. А вывести нужно голоса за неделю...
Заранее спасибо.
----- Мужской деловой журнал - http://www.bvr.com.ua
GolDenOne
Отправлено: 02 Декабря, 2006 - 11:08:02
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Нояб. 2006
Помог: 0 раз(а)
Вот наваял такой запрос:
$query = "SELECT * FROM songs LEFT JOIN golos ON (golos.song_id = songs.id) WHERE status=1 ORDER BY SUM(golos.golos)";
Выдает ошибку...
----- Мужской деловой журнал - http://www.bvr.com.ua
evgenijj
Отправлено: 02 Декабря, 2006 - 21:12:23
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
GolDenOne пишет:
...один пользователь может проголосовать несколько раз за одну и туже песню.
Я так понимаю, что тебе надо правильно учесть голоса тех недобросовестных пользователей, которые проголосовали за одну песню несколько раз. А не проще было проверять, не голосовал ли этот пользователь за эту песню, и если голосовал - не добавлять эту запись в БД?
позволяет правильно учесть голоса тех пользователей, которые проголосовали за одну песню несколько раз. Пользователь id_user=2 проголосовал за песню id_song=1 три раза. Результат этого подзапроса
Покинул форум
Сообщений всего: 4
Дата рег-ции: Нояб. 2006
Помог: 0 раз(а)
Ну не совсем так... Замысел в том, чтобы пользователь мог таки голосовать за одну и туже песню несколько раз. Проверка стоит, голосовать пользователь может раз в сутки.
Вот что у меня получилось:
$query="SELECT songs.song, songs.id, songs.ispolnitel, SUM(golos.golos) AS golosa
FROM songs LEFT OUTER JOIN golos ON golos.song_id = songs.id
GROUP BY songs.song
ORDER BY golosa DESC";\n\n(Добавление)
Спасибо за помошь...
----- Мужской деловой журнал - http://www.bvr.com.ua
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.