2010-08-09 10 views
1
+--------------+--------------+------+-----+-------------------+---------------- 
+ 
| Field  | Type   | Null | Key | Default   | Extra 
| 
+--------------+--------------+------+-----+-------------------+---------------- 
+ 
| mag_id  | int(11)  | NO | PRI | NULL    | auto_increment 
| 
| cat_id  | int(11)  | NO |  | NULL    | 
| 
| mag_cat_id | int(11)  | NO |  | NULL    | 
| 
| name   | varchar(512) | NO |  | NULL    | 
| 
| publish_type | varchar(256) | NO |  | NULL    | 
| 
| chief  | varchar(256) | NO |  | NULL    | 
| 
| tel   | varchar(256) | NO |  | NULL    | 
| 
| fax   | varchar(256) | NO |  | NULL    | 
| 
| website  | varchar(256) | NO |  | NULL    | 
| 
| email  | varchar(256) | NO |  | NULL    | 
| 
| issue_number | varchar(256) | NO |  | NULL    | 
| 
| keyword  | varchar(512) | NO |  | NULL    | 
| 
| index  | tinyint(1) | NO |  | 0     | 
| 
| view_num  | int(11)  | NO |  | 0     | 
| 
| download  | int(11)  | NO |  | 0     | 
| 
| act_date  | timestamp | NO |  | CURRENT_TIMESTAMP | 
| 
+--------------+--------------+------+-----+-------------------+---------------- 

및 카테고리 테이블SQL 하위 쿼리 문제

+----------+--------------+------+-----+-------------------+----------------+ 
| Field | Type   | Null | Key | Default   | Extra   | 
+----------+--------------+------+-----+-------------------+----------------+ 
| cat_id | int(11)  | NO | PRI | NULL    | auto_increment | 
| name  | varchar(256) | NO |  | NULL    |    | 
| act_date | timestamp | NO |  | CURRENT_TIMESTAMP |    | 
+----------+--------------+------+-----+-------------------+----------------+ 

내가 같은 카테고리의 메뉴를 만들려면 : 동영상 (2) 숫자는 숫자에서 오는 정치 (19)

그 범주 안에있는 잡지의,하지만 나는 이것을 만들 데이터베이스를 쿼리하는 방법을 모르겠다. 나는 루프를 통과 카테고리 테이블과 그 루프 안에 내가 잡지 테이블에 각 카테고리의 ID를 보내고 잡지 테이블에서 번호를 가져 오지 만, 나는 이것이 올바른 방법으로 생각하지 않습니다. 여기 내 코드가있다.

<?php 
$category = $this->db->get('category')->result(); 
foreach($category as $c):?> 
<li> 
<?=anchor('main/get/'.$c->cat_id ,'<img src="'.base_url().'images/bullet.gif" border="0"/>&nbsp;&nbsp;'.$c->name .' ('.$this->category_model->get_mag_in_category($c->cat_id) .')');?> 
<!-- Show magazine in each category --> 
</li> 
<?php endforeach;?> 

내가이 질문을 하위 쿼리와 함께 수행해야한다고 생각합니다.

답변

2

그들은 더 관련 잡지가없는 경우에도이 범주를 반환합니다 : 당신은 잡지와 범주를 원하는 경우

select c.name, count(*) as Count 
from category c 
left outer join magazine m on c.cat_id = m.cat_id 
group by c.name 

, 이렇게 :

select c.name, count(*) as Count 
from category c 
inner join magazine m on c.cat_id = m.cat_id 
group by c.name 
+0

완벽! 탱크. – mehdi