2011-01-25 7 views
1

두 개의 테이블 탑 사이트와 톱니가 있습니다.다른 테이블에서 데이터 선택 및 정렬

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

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

누군가가 링크를 클릭 할 때마다 톱 필드의 ID 계정으로 tophits 테이블에 저장됩니다. 내가 지금 무엇을 가지고

는 기본적으로 나는 그 날의 최고 히트 곡을 에코하려면, 그래서 내가 여기에 최고

하여 시간 = 오늘 순서에 계정 = 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는 기본적으로 백틱으로 필드 이름을 보호하지만 select/where 문에서 SQL 메서드를 사용하는 경우 의도 한 SQL 메서드의 형식이 잘못 될 수 있으므로 두 번째 매개 변수를 그대로 유지하려면 FALSE을 지정해야합니다. 또한 오늘을 제한하기 위해 다른 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을 어떻게 반향시킬 수 있습니까? 이렇게? ($ 행 $로서 질의 -> 결과())의 foreach \t \t \t \t \t \t \t \t \t { \t \t \t \t \t \t $ 로우 -> 이름 에코; \t \t \t \t \t \t \t echo $ row-> url; \t \t \t \t \t \t \t \t \t \t \t \t \t} – mike

+0

히트 _ 카운트 는'COUNT (tophits.id)'와 우리가 총 카운트 된 안타를 제공하는 별명입니다. 그리고 예, 결과를 에코하는 법은 정확합니다. – jondavidjohn

+0

그게 효과가 있다고 생각합니까? – jondavidjohn

관련 문제