2017-02-27 15 views
-2

私はカテゴリー製品と製品の分類に3テーブル構造を持っています。カテゴリテーブルには、3つのlvlのcat/subcat/subbcatがあります。カテゴリー別にデータベースを照会

tbl_catalog_categories    tbl_products_to_categories 
`id_category` smallint(6)   `id_record` 
`id_parent` smallint(6)    `id_category` 
`name` varchar(128)     `id_product` 

tbl_products 
`id_product` 

それでは、私はカテゴリtbl_catalog_categoriesための次のエントリを持っているとしましょう:

1 0 Books 
2 1 Action 
3 2 Cops 

とリンクテーブルtbl_products_to_categoriesは、私が欲しいもの

1 3 24 
1 3 25 

である私は、メインカテゴリを選択するときですサブカテゴリとサブサブカテゴリからすべての製品を取得する書籍。したがって、書籍を選択すると、結果は商品ID 24と25になります。ここで

は、私がしようと試みたものです、それは2つのLVLののための作業のだが、私は別の第三いずれかに参加して、私はそれだけで階層表現にあなたのリンクテーブルを変換

$stmt=$this->db->prepare("Select p.name 
FROM tbl_products p 
INNER JOIN tbl_products_to_categories ptoc on ptoc.id_product=p.id_product 
INNER JOIN tbl_catalog_categories c1 on ptoc.id_category=c1.id_category 
INNER JOIN tbl_catalog_categories c2 on c1.id_parent=c2.id_category 

WHERE c2.name=:id and p.active=1 and p.quantity=1"); 
     $stmt->bindParam(":id",$id); 
     $stmt->execute(); 
     $result = $stmt->fetchAll(); 

     return $result; 
    } 
+1

何を試しましたか? – RiggsFolly

+2

ヒント: 'JOIN'(2回必要です)。 –

答えて

関連する問題