Форумы портала PHP.SU » » Работа с СУБД » Случайный вывод данных из БД

Страниц (2): [1] 2 »
 

1. unnamed_newbie - 01 Июня, 2011 - 12:52:33 - перейти к сообщению
Здравствуйте товарищи программисты.

Сразу к делу:
Есть таблица с данными. Предположим что в ней есть 100 полей.
Мне нужно вывести 15 из них в случайном порядке, без повторений.

Сначала делал циклом, где в каждом шаге ставил случайное значение($i), затем делал выборку из базы данных где id равен $i.
И все бы ничего, но со временем стало ясно, что скорость работы такого скрипта очень сильно хромает из за бесконечной выборки из бд, а еще попадают одинаковые значения. И ко всему прочему, если допустим $i = 2, а в таблице идут поля со значениями id 1,3,4,5, то есть двойки нет, следовательно результат возвращает пустой...

Вот и решил обратиться сюда, поскольку своих знаний в данный момент не хватает для решения данной проблемы.
2. vlados - 01 Июня, 2011 - 12:56:13 - перейти к сообщению

Используй эту функцию
(Добавление)
unnamed_newbie кликни на "Спасибо" Ха-ха
3. unnamed_newbie - 01 Июня, 2011 - 12:58:18 - перейти к сообщению
vlados вы хотя бы читали первый пост целиком?
4. OrmaJever - 01 Июня, 2011 - 13:03:18 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. ... ORDER BY rand() LIMIT 15
5. unnamed_newbie - 01 Июня, 2011 - 13:06:48 - перейти к сообщению
OrmaJever, большое спасибо!
Заработало как надо Улыбка
6. vlados - 01 Июня, 2011 - 13:21:35 - перейти к сообщению
unnamed_newbie нет. А чем мой вариант отличается от варианта OrmaJever?
7. unnamed_newbie - 01 Июня, 2011 - 13:28:34 - перейти к сообщению
vlados, просто я так понял что ты мне назвал функцию, которая возвращает мне случайное число в каком то диапазоне, об этой функции я знал давно. А OrmaJever показал как применить эту самую функцию к выбору из базы данных, что мне собственно и нужно было. Теперь вот буду знать, что rand можно сувать в запрос к бд.
8. vlados - 01 Июня, 2011 - 13:33:47 - перейти к сообщению
unnamed_newbie ахахахахахахаахах Радость Радость Радость Радость Радость
Ну блин зачет чувак!!!!!!!!!!!!
Ты где учился sql?
9. kappa - 01 Июня, 2011 - 13:35:42 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT * FROM files ORDER BY rand() LIMIT 15

так вроде точно не будет повторятся
10. vlados - 01 Июня, 2011 - 13:38:18 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://www.woweb.ru/load/93
11. unnamed_newbie - 01 Июня, 2011 - 13:40:28 - перейти к сообщению
vlados я вообще нигде не учился ни sql ни php
kappa а чем там DISTINCT занимается?
12. OrmaJever - 01 Июня, 2011 - 13:42:14 - перейти к сообщению
vlados пишет:
unnamed_newbie нет. А чем мой вариант отличается от варианта OrmaJever?

всем. Начём хотябы с того что rand() это php функция, а я привёл sql вариант.
unnamed_newbie пишет:
kappa а чем там DISTINCT занимается?

Ну если есть одинаковые значения то не будет повторений
13. vlados - 01 Июня, 2011 - 13:47:13 - перейти к сообщению
OrmaJever не умничай Хм Ты используешь ту же функцию но в скьюэл. Гений блин.
(Добавление)
OrmaJever гений помоги мне в вот этих топиках:
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://forum.php.su/topic.php?forum=1&topic=7632
  2. http://forum.php.su/topic.php?forum=1&topic=7620
14. unnamed_newbie - 01 Июня, 2011 - 13:53:40 - перейти к сообщению
vlados в таком случае нужно было написать "вставь функцию rand в запрос mysql и припиши лимит", а иначе как бы я понял что ты имеешь ввиду.
15. vlados - 01 Июня, 2011 - 13:55:51 - перейти к сообщению
unnamed_newbie тебе может еще и скрипт написать? На германском форуме тебя бы забанили за это давно!

 

Powered by ExBB FM 1.0 RC1