Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день. Друзья, подскажите. Вот запрос:
select title from votes_name where id IN (select id from votes_name order by rand()) LIMIT 1;
Почему не выбирается рандомное значение title, а все время первое? Заранее спасибо.
Неактивен
Потому что не правильно составлен запрос.
Если вам нужна одна рандомальная запись из votes_name , то это делается так :
select title from votes_name order by rand() LIMIT 1;
Неактивен
Спасибо за ответ. Но у меня просто основной запрос не такой. Есть таблица с вопросами для голосования votes_name(id, title) и таблица с вариантами ответов votes_item(id, id_title, item). Внешний ключ votes_name.id = votes_item.id_title. Задача - выбрать рандомно одно голосование.
Строю такой запрос:
SELECT votes_name.title, votes_item.item
FROM votes_name, votes_item
WHERE votes_name.id = votes_item.id_title
AND votes_name.id = (select id from votes_name order by rand() LIMIT 1)
Проблема в том, что не выбирается id в подзапросе. Подскажите, как быть?
Неактивен
Неактивен
2evgeny
Спасибо за ответ, но за счет того, что в запросе ставится
order by rand() LIMIT 1
происходит выборка 1-го вопроса и только 1-го варианта ответа. А нужно выбрать все варианты ответа из таблицы votes_item
Отредактированно sNICkerssss (30.05.2011 01:44:37)
Неактивен
WHERE votes_name.id = votes_item.id_title AND votes_name.id = (select id from votes_name order by rand() LIMIT 1)
Сравните эти две строки внимательно глазами. В нижней Вы фиксируете
votes_name.id. В верхней Вы фиксируете votes_item.id_title тем значением,
которое зафиксировали в нижней. Поэтому выбирается одна строка.
Скорее всего, Вы неправильно написали условие связи таблиц.
Неактивен
sNICkerssss написал:
2evgeny
Спасибо за ответ, но за счет того, что в запросе ставится
order by rand() LIMIT 1
происходит выборка 1-го вопроса и только 1-го варианта ответа. А нужно выбрать все варианты ответа из таблицы votes_item
Ага ... Тогда вам надо так
Неактивен
Большое спасибо за ответ. Все работает!
Но у меня вопрос. А как должен выглядеть запрос, если условия практически те же, но рандомный id-шник "вытягивается" с другой таблицы. Вот картинка связки таблиц.
http://www.pictureshack.ru/view_4008Bezymyannyi.jpg
То есть сначала вытягиваем рандомом поле з таблицы "votes_id", затем по найденному "vote_id" выбираем из "votes_name" вопрос и по его id из таблицы "votes_item" все ответы.
Как сделать такой запрос. Помогите плиз. Голова пухнет, не могу правильно построить запрос.
Неактивен
Соедините таблицы JOIN-нами. Не ищите готовых решений, учитесь, проводите свои эксперименты. :-)
Неактивен