За последние 24 часа нас посетили 18757 программистов и 1636 роботов. Сейчас ищут 962 программиста ...

Вывод из бд, случайных данных с наименьшим значением

Тема в разделе "PHP для новичков", создана пользователем ainur777, 5 ноя 2013.

  1. ainur777

    ainur777 Активный пользователь

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Всем привет! Возникла проблема с выводом случайных данных, с наименьшим числом в ячейке.
    Создал тест, все работает, данные записываются в бд.
    Существует таблица "tablica", в ней есть ячейки user и ballov, в ячейке ballov есть цифры от 0 до 10. Нужно чтобы выводилось
    user с наименьшим значением ballov.

    Начал так, но выводит ошибку (из за >= 0 to 6):
    $result = mysql_query(" SELECT * FROM tablica WHERE ballov >= 0 to 6 ORDER BY RAND() LIMIT 1");
    $myrow = mysql_fetch_array($result);

    Знаю что иду в том направлении, подскажите как доделать?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
  3. ainur777

    ainur777 Активный пользователь

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Это понятно с гуглом, но я же спрашиваю именно на форуме, у знающих людей.

    Вот еще попытка, но опять же не вышло:
    $result = mysql_query(" SELECT * FROM tablica WHERE ballov BETWEEN 0 AND 6 ORDER BY RAND() LIMIT 1");
    $myrow = mysql_fetch_array($result);
    Выводит каждый раз разные от 0 до 6, мне нужно чтобы вывел именно минимальную.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    да ты не спрашиваешь, дружок. ты требуешь. это же форум, ёмана! вы должны решить мою задачу!

    наименьшее оно видимо конкретное значение. а случайное это одно из... ты не замечаешь противоречия?
    сформулируй нормально условия и тогда решение само придет в твою голову.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    зачем же вы его просите выводить в случайном порядке тогда?

    SELECT MIN(ballov) FROM tablica WHERE ballov BETWEEN 0 AND 6
     
  6. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Код (Text):
    1. SELECT * FROM `table` WHERE `points` IN (SELECT MIN(`points`) FROM `table)
    Выведет всех пользователей у которых минимальное количество баллов

    PC> зачем вы привели в своём запросе цифры "0" и "6"?
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    SELECT MIN() возвращает одно значение! значит здесь IN() не нужен.

    и вообще хз что нужно ))) топикстартер походу и сам не знает. зачем-то ему понадобился конкретный диапазон значений:
    вобщем ему слово.
     
  8. ainur777

    ainur777 Активный пользователь

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Спасибо
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    наверное. я не проверял.
     
  10. ainur777

    ainur777 Активный пользователь

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Такой еще вопрос, SELECT MIN(ballov) FROM tablica WHERE ballov BETWEEN 0 AND 6 будет ли выводить разные числа ballov и имен user, допустим у меня в поле user имена, в ballov баллы. Именно нужно чтобы он выводил разные user с минимальным значением, при том у некоторых user по 0 баллов. И как будет работать сервер, если в таблице около 800 строк?
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не, после того, как ты выяснил минимальный балл, надо сделать запрос на всех юзеров с этим баллом отдельно.
     
  12. ainur777

    ainur777 Активный пользователь

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Да я это сделал,с эти все в порядке. Мне нужно лишь чтобы выводились случайные user с минимальным значением ballov. Допустим 10 разных user и у них по 0 ballov, именно между ними выбирался вариант вывода. И как сделать если нет в таблице user с ballov=0, чтобы была выборка c user ballov=1?
    Мучает один вопрос: какая нагрузка на сервер, если в таблице 800 строк и около 100 пользователей онлайн.
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну присобач к этому второму запросу свой ордер бай ранд и будет красиво. =)
     
  14. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Код (Text):
    1. SELECT * FROM `table` WHERE `points` IN (SELECT MIN(`points`) FROM `table) ORDER BY RAND() LIMIT 1
     
  15. ainur777

    ainur777 Активный пользователь

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Всем спасибо!!!

    Добавлено спустя 47 секунд:
    + спасибо