2012-02-20 3 views
0

저는 codeigniter에 익숙하지 않아 데이터베이스를 더 잘 알기 위해 노력 중이므로 나중에 따라 가기로했습니다. this guide.codeigniter 장바구니와 여러 테이블

그러나 좀 더 고급화하고 여러 테이블의 여러 페이지에 걸쳐 사용하고 싶습니다. 일종의 작업을하고 있지만 카트에 추가를 클릭하면 항상 데이터베이스 1의 항목이 선택됩니다.

을 사용합니다.
$this->db->where('id', $id); 
$query = $this->db->get('fruit', 1); 

이 항목을 장바구니에 추가하려면 여기를 클릭하십시오. 하지만 나는 그것이 하나 이상의 테이블에서 선택할 수 있기를 원한다. 과일과 veg 둘 다 다른 테이블에 있지만 동일한 열이있는 곳이라면 조인이나 다른 방법을 사용하여 쉽게이 작업을 수행 할 수 있습니까?

답변

1

예, codeigniter active record을 살펴 보았습니까?

Something like? 
$this->db->select('*'); 
$this->db->from('fruit'); 
$this->db->join('veg', 'fruit.id = veg.id'); 

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

// Produces: 
// SELECT * FROM fruit 
// JOIN veg ON veg.id = fruit.id 

편집 : 귀하의 코멘트에있는 당신의 설명에서, 나는이 두 테이블을 구성.

mysql> desc fruit; 
    +-------+-------------+------+-----+---------+-------+ 
    | Field | Type  | Null | Key | Default | Extra | 
    +-------+-------------+------+-----+---------+-------+ 
    | id | int(11)  | NO |  | NULL |  | 
    | name | varchar(29) | NO |  | NULL |  | 
    | price | int(11)  | YES |  | NULL |  | 
    +-------+-------------+------+-----+---------+-------+ 
    3 rows in set (0.00 sec) 

    mysql> desc veg; 
    +-------+-------------+------+-----+---------+-------+ 
    | Field | Type  | Null | Key | Default | Extra | 
    +-------+-------------+------+-----+---------+-------+ 
    | id | int(11)  | NO |  | NULL |  | 
    | name | varchar(20) | NO |  | NULL |  | 
    | price | int(11)  | YES |  | NULL |  | 
    +-------+-------------+------+-----+---------+-------+ 
    3 rows in set (0.00 sec) 

다음은 다중 조인을 사용하는 기능 테스트의 예입니다. 나는 이것이 당신의 최종 SQL 쿼리라고 생각하십니까?

SELECT * 
FROM (`fruit`) 
JOIN `veg` ON `fruit`.`id` = `veg`.`id` and fruit.name = veg.name and fruit.price = veg.price 
WHERE `fruit`.`id` = 1 

그리고이 코드 서명자 쿼리입니다.

public function testJoins() { 
    $id = 1; 
    $this->db->select('*'); 
    $this->db->from('fruit'); 
    $this->db->join('veg', 'fruit.id = veg.id and fruit.name = veg.name and fruit.price = veg.price'); 
    $this->db->where('fruit.id', $id); 

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

답장을 보내 주셔서 감사합니다. 나는 이것을 시도했지만 모든 ID는 veg의 항목과 동일한 이름과 가격을 가지며''fruit.id = veg.id AND fruit.name = veg.name AND fruit.price = veg를 사용하여 더 많은 테이블에 가입 할 때. 가격 '그것은 제품이 존재하지 않는다는 것을 나타낸다. 답장을 보내 주셔서 다시 한번 감사드립니다. – DannyH

+0

최종 SQL 쿼리가 무엇인지 알려 주시면 ci 활성 레코드 구문을 사용하여 쿼리를 구성하겠습니다. – Jasonw

+0

'$ id = $ this-> input-> post ('product_id'); $ qty = $ this-> input-> post ('수량'); $ this-> db-> select ('*'); $ this-> db-> from ('fruit'); $ this-> db-> join ('veg', 'fruit.id = veg.id AND fruit.name = veg.name AND fruit.price = veg.price'); $ query = $ this-> db-> get(); ''$ this-> db-> 줄을 제거하겠습니까? ('id', $ id); // id가 게시 된 ID와 일치하는 위치를 선택하십시오. '그 일과 관련이 있습니까? – DannyH

관련 문제