|
|
|
|
|
для: cheops
(06.07.2012 в 16:42)
| | логика изменилась, нужно так:
нужно выстроить по свежести, свежие сверху, после чего выбрать 10 новостей и из них уже выбрать любые 3 рандомно
и как собственно реализовать такой запрос?
UPD
Вот запрос по примеру сделал, не знаю как корректно по синтаксису, но выводит вроде как надо
SELECT `em_newart_date`,
`em_newart_name`,
`em_newart_url`,
`em_newart_ftext`,
`em_newart_image_200`
FROM(
SELECT `em_newart_id` FROM `em_newart`
WHERE `em_newart_type` = 'n'
AND `em_newart_access` = 'y'
AND `em_newart_date` < NOW()
AND `em_newart_category` = 86
ORDER BY `em_newart_date` DESC
LIMIT 10
) as ids
JOIN `em_newart` ON `em_newart`.`em_newart_id` = ids.`em_newart_id` ORDER BY RAND() LIMIT 3
|
| |
|
|
|
|
|
|
|
для: TetRiska
(06.07.2012 в 16:34)
| | Тогда зачем вам ORDER BY `em_newart_date` DESC? просто мешайте их при помощи ORDER BY RAND() и берите 3 штуки при помощи LIMIT. | |
|
|
|
|
|
|
|
для: cheops
(06.07.2012 в 15:22)
| | нет, не так, нужно выбрать все новости от самых свежих до не свежих, перемешать и оставить только 3 штуки | |
|
|
|
|
|
|
|
для: TetRiska
(06.07.2012 в 14:06)
| | Правильно ли понимаю, что нужно выбрать три последние новости, а потом перемешать их в случайном порядке? Тогда лучше задействовать вложенный запрос, который поместить в конструкцию FROM и уже эту вложенную таблицу из 3-х элементов перемешать при при помощи ORDER BY RAND() | |
|
|
|
|
|
|
| Всем привет. Вот запрос:
SELECT `em_newart_date`,`em_newart_name`,
`em_newart_url`,
`em_newart_ftext`,
`em_newart_image_200`
FROM `em_newart`
WHERE `em_newart_type` = 'n'
AND `em_newart_access` = 'y'
AND `em_newart_date` < NOW()
AND `em_newart_category` = 86
ORDER BY `em_newart_date` DESC, RAND()
LIMIT 3
|
Нужно, чтобы выбрало сначала по дате, самая свежая впереди, а потом рандомно из этого количества выбрало 3 штуки. Пока не могу понять почему запрос всегда выводит одно и тоже, не рандомизируя. | |
|
|
|
|