За последние 24 часа нас посетили 35634 программиста и 1724 робота. Сейчас ищет 1041 программист ...

Определение чисел.

Тема в разделе "PHP и базы данных", создана пользователем 715kg, 15 май 2013.

  1. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    А мелкий текст я увидел :)

    Добавлено спустя 3 минуты 54 секунды:
    Давайте посмотрим в 2 запроса) Немного отредактировал)

    Код (Text):
    1. $id = dbquery("SELECT COUNT(*) FROM amx_commentaries");
    2. $id_c = dbresult($id , 0);
    3. $random = rand(1, $id_c);
    4. $get_comments = mysql_query("SELECT id, server_id, username, text, date, type FROM amx_commentaries WHERE type!='0' LIMIT $random, 1");
    Как эффект? если не обращать внимание на 2 запроса к бд)
     
  2. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Вообще, мне кажется, если база большая, лучше обойтись 2мя запросами нежели order by rand()
     
  3. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вообще-то я уже сказал что именно этот вариант был черным юмором =)
    другое решение?
     
  4. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Если вы про этот вариант

    Код (Text):
    1. $id = dbquery("SELECT COUNT(*) FROM {$table}");
    2. $id_c = dbresult($id , 0);
    3. $random = rand(1, $id_c);
    4. select * from `{$table}` WHERE id = '$random'
    То вот этот другой
    Код (Text):
    1. $id = dbquery("SELECT COUNT(*) FROM amx_commentaries");
    2. $id_c = dbresult($id , 0);
    3. $random = rand(1, $id_c);
    4. $get_comments = mysql_query("SELECT id, server_id, username, text, date, type FROM amx_commentaries WHERE type!='0' LIMIT $random, 1");
    Нету другого решения) Буду оставлять так)

    Добавлено спустя 2 минуты:
    В первом вытаскивал со значением (ГДЕ id = '$random')
    Во втором (LIMIT $random, 1)
    Есть еще идейка по объединению запроса. Чтобы все в 1 сливалось) Только вот в голову опять не лезет(
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да чтааааж такааайааа тааа..... подзапрос - получаем кол-во строк в базе. это свойство таблицы. пересчет не нужен. на выходе виртуальная таблица с одной строкой. агрегируем произвольное значение. не по всей таблице а по виртуальной. для одной единственной строки. готово. на выхлопе из подзапроса одна строка с одним столбцом. теперь по этому квадратику ищем ближайший существующий идентификатор строки.