Aşağıdaki veritabanı yapısına sahibim ve veritabanım çok büyük olmasa da, belirli bir düğümde veya yaprakta ürünleri görüntülemek için tek bir sorgu yöntemini kullanmak istiyorum. Geçerli veritabanı, diğer çocukları içeren düğümlerin yanı sıra yapraklarla ilgili ürünlere sahiptir (lütfen bkz. Ürün 3 ve 4). Listelemek istediğim, düğümün kök, yaprak veya başka bir çocuk ebeveyni olduğu $ _GET ['node'] tarafından tutulan düğümlere ve çocuklara ait tüm ürünlerdir.İç içe geçmiş tablo ürünleri sorgusu 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 |
+------------+--------+
o kadar çok ben bir düğüm içinde tüm ürünleri almak için ne kadar karmaşık sorgular, aşina değilim (2) 'dir:
$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'])
}
Gördüğünüz gibi olmaz üç yürütme am Sorgular (sınıf içinde biri) ki eminim ki bu en iyi yaklaşım değil.
liste beklenen sonucunuz ve ne denediğiniz –