Общие > Базы данных

Как сделать MySQL-запрос с двумя условиями WHERE?

(1/3) > >>

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. Может теперь стало яснее и может какие-то другие способы пришли в голову? Жду советов ;)

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии