2013-09-15 3 views
0

Следующий запрос содержит популярные вопросы из вопросов, заданных за последние 2 дня. Он смотрит на таблицу фидов, чтобы узнать, что говорит о последних, и затем ищет таблицу тегов, чтобы найти, какая из них популярна.MYSQL вид не заполняется пустые места для заполнения 1000

Я получаю около 60 результатов, которые являются большими, но мне нужно 1000 результатов. Это означает, что мне нужно заполнить все остальные случайными вопросами.

Мой запрос sql пытается сделать это, но не заполняет остальную часть представления больше вопросов, а не в таблице фидов.

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`%` 
    SQL SECURITY DEFINER 
VIEW `popular` AS 
    select 
     `q`.`name` AS `name`, 
     `q`.`questionUrl` AS `questionUrl`, 
     `q`.`miRating` AS `miRating`, 
     `q`.`imageUrl` AS `imageUrl`, 
     `q`.`foundOn` AS `foundOn`, 
     `q`.`myId` AS `myId` 
    from 
     (`question` `q` 
     join `feed` `f` ON ((`q`.`myId` = `f`.`question_id`)) 

     join `tag` `t` ON ((`q`.`myId` = `t`.`question_id`))) 

    where 
     (`t`.`name` like '%popular%') 
    group by `q`.`name` 
    order by (max(`f`.`timeStamp`) >= (now() - interval 1 day)) desc , (`q`.`myId` is not null) desc 
    limit 0 , 1000comment 
+0

Вы можете искать '2-day' и' other' вопросы отдельно, то 'СОЮЗА 'результаты и' limit' вывод. –

ответ

1

Если вам нужны случайные вопросы, удалите пункт where и переместить логику в order by:

select 
    `q`.`name` AS `name`, 
    `q`.`questionUrl` AS `questionUrl`, 
    `q`.`miRating` AS `miRating`, 
    `q`.`imageUrl` AS `imageUrl`, 
    `q`.`foundOn` AS `foundOn`, 
    `q`.`myId` AS `myId` 
from 
    (`question` `q` 
    join `feed` `f` ON ((`q`.`myId` = `f`.`question_id`)) 
    join `tag` `t` ON ((`q`.`myId` = `t`.`question_id`))) 
group by `q`.`name` 
order by (max(`f`.`timeStamp`) >= (now() - interval 1 day)) desc , 
     max(`t`.`name` like '%popular%') desc, 
     rand() 
limit 0 , 1000; 
+0

Хорошо, не получается ли это получить случайно для всех 1000? Мне просто нужно случайное после того, как начальные 60 вернутся (потому что с кодом в моем вопросе в представлении есть только 60 вопросов, поэтому после этого я хочу добавить дополнительные 940 случайных вопросов. –

+0

@waf - Как я уже сказал, два ** аналогичных запроса, из которых извлекаются по 1000 записей. Один на 2 дня, другой случайный. Сделайте дополнительный столбец, который будет (скажем) '1' за 2 дня и' 0' для случайного. UNION - два запроса. 'LIMIT 1000' на результат с' ORDER BY', начиная с этого нового поля, поэтому ваши 2-дневные записи имеют приоритет. –

Смежные вопросы