2

私は4つのテーブルを持っています。それはすべて関係にあります。はい、彼らはお互いを愛しています:p

  • 製品
  • 製品カテゴリ
  • 製品カテゴリの関係
  • 製品画像

これら 4 つのテーブルを 1 つのクエリで結合したいのですが、これを行うための Codeigniter コードを次に示します。

function list_products($limit = 10, $offset = 0, $category)
{
    $this->db->select('p.url, p.name, p.title, i.image');
    $this->db->from('products p');
    $this->db->join('product_categories c','c.id = r.category_id',
                    'left');
    $this->db->join('product_category_relations r',
                    'r.category_id = c.id','left');
    $this->db->join('product_images i',
                    'p.id = i.product_id AND i.default = 1','left');
    $this->db->where('c.url',$this->category_url.$category);
    $this->db->limit($limit,$offset);
    return $this->db->get()->result();
}

この関数/クエリを実行すると、結果は "r" の定義に関するエラーになります。

「on句」の不明な列「cms_r.category_id」

クエリ:

選択しpます。urlpnameptitleiimageFROM ( cms_productsp) LEFT JOIN cms_product_categoriesc ON c. id= cms_r. category_idLEFT JOIN cms_product_category_relationsr ON r. category_id= c. idLEFT JOIN cms_product_imagesi ON p. id= i. product_idAND i.default = 1 WHERE c. url= 'カテゴリー/イルバシ' LIMIT 12

手伝って頂けますか?

4

2 に答える 2

0

rあなたはそれを使用した後に似ているように割り当てproduct_category_relationsます。

ここにあなたは書きます:

$this->db->join('product_categories c','c.id = r.category_id','left');

しかし、何rですか?この質問に答えるのは、次のステートメントだけです。

$this->db->join('product_category_relations r','r.category_id = c.id','left');

具体的な回答が必要な場合は、サンプルのSQL作成スクリプトを提供してください。

于 2012-08-11T14:37:16.700 に答える