Топ-5 рейтинга - PullRequest
       9

Топ-5 рейтинга

1 голос
/ 24 октября 2011

Поэтому мне интересно, является ли это даже лучшим способом управления моими данными для этой таблицы, потому что с моим запросом я не получаю правильных результатов, которые хочу.

Я хочу, чтобы он занял топ-5 рейтинга с последней записи в таблице. Проблема в том, что 0 для параметра character_id есть. Когда я делаю свой php, чтобы увидеть, если нет значения, то он должен повторить TBD, но он все еще не показывает его в массиве, чтобы быть 0.

Таблица: top5

id    ranking #    character_id    status_id    date_created
1         1           1                1         2011-10-17 17:18:54 
2         2           2                1         2011-10-17 17:18:54    
3         3           3                1         2011-10-17 17:18:54
4         4           4                1         2011-10-17 17:18:54
5         5           5                1         2011-10-17 17:18:54
6         1           6                1         2011-10-24 12:18:54
7         2           7                1         2011-10-24 12:18:54
8         3           8                1         2011-10-24 12:18:54
9         4           9                1         2011-10-24 12:18:54
10        5           0                1         2011-10-24 12:18:54

function getTop5()
{
    $this->db->select('characters.character_name, top5.character_id'); 
    $this->db->from('top5'); 
    $this->db->join('characters', 'characters.id = top5.character_id'); 
    $this->db->where('top5.status_id', '1');  
    $this->db->order_by('top5.date_created','desc');
    $this->db->limit(5);
    $query = $this->db->get();
    return $query->result_array();
}

Array ( [0] => 
       Array ( [character_name] => \"Mr. Magnificent\" Matt Sharp 
               [character_id] => 9 ) 
        [1] => 
       Array ( [character_name] => \"The Unforgettable\" Jimmy Watkins 
               [character_id] => 8 ) 
        [2] => 
       Array ( [character_name] => Romie Rains 
               [character_id] => 7 ) 
        [3] => 
       Array ( [character_name] => Monica Dawson 
               [character_id] => 6 ) 
        [4] => 
       Array ( [character_name] => \"The Outlaw\" Mike Mayhem 
               [character_id] => 5 ) )

РЕДАКТИРОВАТЬ: Кто-нибудь еще хочет попробовать?

Так потерян и все еще не могу получить желаемый результат

Ответы [ 3 ]

1 голос
/ 24 октября 2011

Вы хотите заказать по top5.date_created в порядке убывания.Если вы действительно хотите только последний день, вам также понадобится условие WHERE для этого.

1 голос
/ 24 октября 2011
function getTop5()
{
    $this->db->select('characters.character_name, top5.character_id'); 
    $this->db->from('top5'); 
    $this->db->join('characters', 'characters.id = top5.character_id'); 
    $this->db->join( '( SELECT DATE(MAX(date_created)) AS lastdate
                        FROM top5 
                        WHERE status_id = 1
                      ) AS tm'
                   , 'top5.created_at >= tm.lastdate 
                      AND top5.created_at < tm.lastdate + INTERVAL 1 DAY'); 
    $this->db->where('top5.status_id', '1'); 
    $this->db->order_by('top5.ranking','asc');
    $this->db->limit(5);
    $query = $this->db->get();
    return $query->result_array();
}
1 голос
/ 24 октября 2011

Не знаю, что это за класс БД, но просто добавьте

AND date(date_created) = CURDATE();

на запрос

или добавить DESC к ORDER пункту

Так что-то вроде

$this->db->select('characters.character_name, top5.character_id'); 
$this->db->from('top5'); 
$this->db->join('characters', 'characters.id = top5.character_id'); 
$this->db->where('top5.status_id', '1'); 
// WHERE date(top5.date_created) = CURDATE() 
$this->db->order_by('top5.date_created');
$this->db->limit(5);
$query = $this->db->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...