Общие > Базы данных
Как сделать MySQL-запрос с двумя условиями WHERE?
DJ Fat:
Народ, помогите, пожалуйста. Может быть это выглядит тупо, но мне нужно сделать запрос с двумя условиями WHERE. А именно:
$result = $pafiledb_sql->query($db, "SELECT * FROM $db[prefix]_files WHERE (file_totalvotes == 1) ORDER BY (file_rating/file_totalvotes) WHERE (file_totalvotes > 1) ORDER BY (file_rating/(file_totalvotes - 1)) DESC LIMIT $start,20", 0);
Поясню: если file_totalvotes равен 1, то запрос один, если больше 1, то другой. Возможно ли это? Когда я запускаю этот кусок кода получаю ошибку. Что делать? :o
Заранее спасибо!;)
ThE0ReTiC:
--- Цитировать ---DJ Fat:
Что делать?
--- Конец цитаты ---
ИМХО немного поправить алгоритм, ибо должна нормально отрабатывать конструкция file_rating/file_totalvotes
Макс:
DJ Fat
Во-первых, нужно сюда код ошибки постить (услуги телепатов тебе не по карману)
Во-вторых по-моему так как ты пишешь - неправильно (2 where использовать нельзя). Наверное должно быть что-то вроде этого:
"SELECT * FROM $db[prefix]_files
WHERE
(file_totalvotes == 1)
OR
(file_totalvotes > 1)
ORDER BY
(file_rating/file_totalvotes),
(file_rating/(file_totalvotes - 1)) DESC LIMIT $start,20"
хотя я не очень понял, что именно ті хочешь сделать своим запросом.
ThE0ReTiC:
Макс
ИМХО немного не так (но 2 WHERE действительно нельзя)
он пытается ответвить запрос:
если file_totalvotes = 1 то file_rating/file_totalvotes
иначе
file_rating/(file_total_votes - 1)
DJ Fat
http://www.mysql.com/doc/en/Control_flow_functions.html
DJ Fat:
Народ, я немного проясню ситуацию. У меня база данных ди-джейских миксов, с системой рейтнга. Короче за каждый микс можно проголосовать по 10-балльной системе. Рейтинг вычисляется по формуле количество набранных баллов / количество голосов. Но проблема вот в чём: почему-то создатели скрипта количество голосов по умолчанию ставят на 1! Т.е. когда за микс не голосовали у него totalvotes = 1! Тупо, на мой взгляд, но я ничего сделать не могу - не буду же я переписывать скрипт. А из-за того, что по умолчанию 1, при выводе в запросе приходится вычитать эту самую единицу, логично? А что будет, если у микса нет голосов? Будет 1 - 1, а это бред. Так вот чтобы избежать этого бреда я и придумал сделать два WHERE. Может теперь стало яснее и может какие-то другие способы пришли в голову? Жду советов ;)
Навигация
Перейти к полной версии