SQL запрос

12
N
На сайте с 06.05.2007
Offline
419
#11


select * from
(select pq_id,pq_question from questions order by rand() limit 1 ) questions
join options on ( questions.pq_id=options.po_question) ;

наверное вы union спутали с join :)

не понимаю в чем тут можно трудности увидеть. Да, pd_id в каждой строке будет повторяться, но это не проблема. Нужно помнить об этом и вывести заголовок вопроса только из первой строки.

Кстати, в таком виде limit 1 работает.

Запрос есть где оптимизировать, но это уже зависит от объема ваших данных.

Особенность order by rand() в том, что оно вычисляет функцию rand() для каждой записи и все это сортирует. С увеличением объема данных все это начинает тормозить. Поэтому, если тут речь идет о выводе блока на главную страничку сайта, блок следует сохранить (закешировать) и лишь иногда обновлять содержимое.

Конечно, это если речь идет о живом немаленьком проекте. Преждевременная оптимизация тоже ведь вредна.

Кнопка вызова админа ()
frantic
На сайте с 09.02.2009
Offline
27
#12

netwind, спасибо!!)) Работает. Я не знаю как это работает, я бы до такого не додумался)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий