2011-01-25 3 views
1

У меня есть два стола topsites и tophits.Выбор и заказ данных из другой таблицы

tophits has id, account, useragent, ip referral, time 

topsites has id, name, email, url, return, active 

Каждый раз, когда кто-то нажимает на ссылку, она хранится в таблице tophits с идентификатором учетной записи от topsites.

В основном я хочу, чтобы эхо из лучших хитов в течение дня, поэтому я полагаю, мне нужно подсчитать, сколько хитов было за счет = 4 по времени порядка = сегодня топ

Вот что я так далеко

$this->db->select('name, url'); 
$this->db->from('topsites'); 
$this->db->where('active' '1'); 
$this->db->join('tophits', 'tophits.id = topsites.account'); 

(Это для CodeIgniter)

я застрял. Любая помощь?

ответ

1

Попробуйте это (непроверенные)

При объединении таблиц, нужно указать в ваших отборных утверждений, которые таблице данное поле принадлежит. Кроме того, CI по умолчанию защищает имена полей с backticks, НО, если вы используете SQL-методы в своих операторах select/where, вам нужно предоставить второй параметр FALSE, чтобы он не делал этого, потому что он может привести к искажению ваших предполагаемых методов SQL. Вам также нужно добавить другой оператор where, чтобы ограничить его до сегодняшнего дня.

$this->db->select('topsites.name, topsites.url, COUNT(tophits.id) AS hit_count',FALSE); 
$this->db->from('topsites'); 
$this->db->where('active' '1'); 
$this->db->join('tophits', 'tophits.id = topsites.account'); 
$this->db->order_by('hit_count');  

$query = $this->db->get(); 
+0

Благодарим за отзыв. Что такое hit_count? Как бы я выбрал topsites.name и .url? Как это? \t Еогеасп ($ query-> результат (а) в $ ряду) \t \t \t \t \t \t \t { \t \t \t \t \t \t \t эхо $ row-> имя; \t \t \t \t \t \t echo $ row-> url; \t \t \t \t \t \t \t \t \t \t \t \t \t} – mike

+0

hit_count это псевдоним, мы даем общие счетный хиты с 'COUNT (tophits.id)'. И да, вы правы в том, как отражать результаты. – jondavidjohn

+0

Я предполагаю, что сработал? – jondavidjohn

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