2011-12-08 2 views
1

나는 두 개의 테이블 manufacturercolors을 가지고 있습니다.SQL + CI : 여러 행을 조인하는 방법?

manufacturer에서. 색상 표에서

id  title 
5  Audi 
8  Toyota 
11  Peugeot 

내가 어떻게 모든 차량에 대한 모든 색상을 보여주기 위해 데이터베이스에서 결과를 가져올 수 있습니다,

id  car_id  color 
1  5   red 
2  5   blue 
3  8   cyan 
4  5   purple 
5  8   dark_cyan 
6  11   white 
7  11   black 

문제는 제조업체에 대한 여러 색상을 가지고?

I는 다음과 같이 스티치 ..

$this->db->select('m.*, c.*'); 
$this->db->join('colors c', 'c.car_id = m.id', 'left'); 
$this->db->group_by('m.title'); 
$this->db->order_by('c.color', 'DESC'); 

return $this->db->get('manufacturer'); 

가이

- Audi 
red 
blue 
purple 

- Toyota 
cyan 
dark_cyan 

- Peugeot 
white 
black 

처럼 보여 질 것이라고

<?php foreach($all_colors->result() AS $color) : ?> 

    <h4><?php echo $color->title; ?></h4> 

    <?php echo $color->color; ?> 

<?php endforeach; ?> 

그래서보기이 내 예는 제목을 보여 첫번째 것 그 차 색깔 ...?

- Audi 
red 

- Toyota 
cyan 

- Peugeot 
white 

감사합니다.

답변

0

데이터를 가져 오는 방식에 이상한 점은 없습니다. 유일한 문제는 이러한 방법에서 별칭을 사용하는 것일 수 있습니다. 별명 않고 데이터를 가져 오기 위해

<?php foreach($all_colors->result() AS $color) : ?> 
<h4><?php echo $color->title; ?></h4> 
<?php echo $color->color; ?> 
<?php endforeach; ?> 

또는 시도 : 다음

$q = $this->db->query("SELECT * FROM manufacturer m left join colors c on c.car_id = m.id GROUP BY m.title ORDER BY c.color DESC"); 
return $q->result(); 

를 실행 한 다음, 같은 날 쿼리를 사용하려고

$this->db->select('*'); 
$this->db->join('colors', 'colors.car_id = manufacturer.id', 'left'); 
$this->db->group_by('manufacturer.title'); 
$this->db->order_by('colors.color', 'DESC'); 
return $this->db->get('manufacturer'); 
관련 문제