форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / Создание сайта / Вопрос по MySQL
Автор Сообщение
Андрей
Алексеевич

2123
# Дата: 23 Мар 2006 05:27


Блин, давно не работал с мускулом, забыл как сделать..

Как из таблицы взять несколько рандомных значений, без забирания всей таблицы в массив и стандартным образом брать, т.е на языке sq это реально сделать?

smallcms
Участник

2752
# Дата: 23 Мар 2006 06:39


SELECT *(или конкретный/ые столбы) FROM таблицо WHERE столбец=(далее применим rand из PHP, т.к. в MySQL он мягко говоря ну не очень) rand(0, x), где x - число солбов.
Только спрашивается: а нафига? Ты боишься выбрать все значения в мОсиф? Суть сделать как можно меньше простых обращений к таблице, а не торкаться каждый раз в мускульный порт по лубому пустяку. SELECT * FROM тоблицо и не слушай никого.

Андрей
Алексеевич

2123
# Дата: 23 Мар 2006 06:50


smallcms
Проблема в том, что я могу получить доступ только к строке mysql запроса, а сам запрос выполняется в другом месте...
Ранд столбец тоже неподходит...

Нужно взять 5 рандомных значений...

Андрей
Алексеевич

2123
# Дата: 23 Мар 2006 06:51


Всё-таки самописные классы работы с txt db рулят. Всегда можно что-то дописать.

smallcms
Участник

2752
# Дата: 23 Мар 2006 07:04


Андрей
в чём проблема?
SELECT * FROM таблица WHERE колонка=(PHP)rand(min, max) LIMIT 5
фсиО.

Андрей
Алексеевич

2123
# Дата: 23 Мар 2006 07:11


колонка
Так и писать? Колонка? Там id вложенные по дереву. Такой метод можно для flat-type db...

А «LIMIT» не имеет необ. значений?
Типо

LIMIT с_какого_начать , каким_кончить

?

smallcms
Участник

2752
# Дата: 23 Мар 2006 07:17 ° Поправил: smallcms


Андрей
LIMIT с_какого_начать , сколько_взять

а вообще-то я ступил. нужно указать WHERE-условие 5 раз. то есть
SELECT * FROM table WHERE id=rand(0,x) OR id=rand(0,x) OR id=rand(0,x) OR id=rand(0,x) OR id=rand(0,x)

о!

зы: не AND, а OR правильно. уфф...

Андрей
Алексеевич

2123
# Дата: 23 Мар 2006 07:41


id=rand(0,x) OR id=rand(0,x) OR id=rand(0,x) OR id=rand(0,x) OR id=rand(0,x)

Мне такой способ неподходит, у текущей позиции в базе могут быть дочерние элементы с разбросом id, напр id[первый_child] == 0, id[второй_child] == 88888 - и мне нужны все эти элементы с parent_id равной текущей позиции.

Наверно придётся остановиться на LIMIT rand(min, max), 5
Только надо будет чтоб rand(min, max) - 5 было не больше всей таблицы... А сколько значений в базе я не знаю. Лол.

Прости если где-то резко, просто уже два часа мудусь.
Спасибо, за ответы.

smallcms
Участник

2752
# Дата: 23 Мар 2006 08:06


Андрей
id[первый_child] == 0, id[второй_child] == 88888
а реорганизовать таблу не получится? чтоб всё ровненько по линеечке лежало? или там настолько всё запущено?

Андрей
Алексеевич

2123
# Дата: 23 Мар 2006 08:18


а реорганизовать таблу не получится?
или там настолько всё запущено?
Datalife engine с 118 категориями.

Андрей
Алексеевич

2123
# Дата: 23 Мар 2006 12:45


Ура.
Ответ оказался прост:

SELECT * FROM my_table ORDER BY rand() LIMIT 3

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:28644, gzipped size:8520

Mp3 Download || Мир Спанч боба || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]