私は以下のデータベース構造を持っています。データベースはそれほど大きくはありませんが、任意のノードまたはリーフに製品を表示するための単一のクエリメソッドを採用したいと考えています。 現在のデータベースには、リーフに関連する製品と、他の子を含むノードがあります(製品3と4を参照してください)。 私がリストしたいのは、$ _GET ['node']に含まれるノードと子に属するすべての製品です。ここで、nodeはルート、リーフ、または他の子の親になります。ネストしたテーブルの製品クエリmysql
+---------+-----+-----+---------+
| tree_id | lft | rgt | name |
+---------+-----+-----+---------+
| 1 | 1 | 138 | TV's |
| 2 | 2 | 91 | Phones |
| 3 | 3 | 26 | Samsung |
| 4 | 4 | 10 | Used |
| 5 | 11 | 25 | New |
| 6 | 27 | 45 | Apple |
| 7 | 46 | 90 | Philips |
| 8 | 47 | 51 | Touch |
| 9 | 52 | 89 | Key |
| | | | |
+---------+-----+-----+---------+
+------------+-------------+-------+
| product_id | Name | make |
+------------+-------------+-------+
| 1 | Touch Easy | 4466 |
| 2 | Eagle Eye | 5523 |
| 3 | Super Phone | 7Utt |
| 4 | Crazy Touch | Utiir |
+------------+-------------+-------+
+------------+--------+
| product_id | cat_id |
+------------+--------+
| 1 | 5 |
| 2 | 8 |
| 3 | 2 |
| 4 | 3 |
+------------+--------+
私はそんなにので、私はノード内のすべての製品を取得するために何をすべきか(2)である複雑なクエリに慣れていないです:あなたが見ることができるように
$node = SELECT * FROM `categories` WHERE `id` = 2
$products = SELECT products_categories.id
FROM `products_categories`, `categories`
WHERE `categories`.`left` > ".$node['left']."
AND `categories`.`right` < ".$node['right']."
AND `products_categories`.`cat_id` = `categories`.`id`
foreach($products as $product){
$prod = new Product($prod['id'])
}
、私は3を実行しています私が確信しているクエリ(クラス内の1つ)は、最良のアプローチではありません。
リストあなたの期待した結果とあなたが試したこと –