gpt4 book ai didi

mysql - 嵌套表产品查询mysql

转载 作者:行者123 更新时间:2023-11-30 22:21:56 26 4
gpt4 key购买 nike

我有以下数据库结构,尽管我的数据库不是很大,但我想采用单一查询方法来显示任何给定节点或叶中的产品。当前数据库具有与叶以及包含其他子项的节点相关联的产品(请参阅产品 3 和 4)。我想列出的是属于 $_GET['node'] 包含的节点和子节点的所有产品,其中节点可以是根节点、叶节点或任何其他子节点父节点。

+---------+-----+-----+---------+
| 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'])


}

如您所见,我正在执行三个查询(一个在类中),我确信这不是最佳方法。

最佳答案

这种嵌套集模型比通常的相邻模型更复杂,尤其是在数据操作部分,但选择速度非常快。

无论如何,通过简单的谷歌搜索,您可能会找到可以帮助您轻松完成任务的开源类。

这样的一个是:https://github.com/riquito/Baobab

我使用的搜索关键词是:github nested set model php mysql

编辑:

对于您的特定情况,这样的查询可能有效:

SET @cid := 2;
SET @lft := (SELECT `lft` FROM `categories` WHERE `id` = @cid);
SET @rgt := (SELECT `rgt` FROM `categories` WHERE `id` = @cid);

SELECT `pc`.`productID`
FROM `products_categories` `pc`
LEFT JOIN `categories` `c` ON `c`.`id` = `pc`.`categoryID`
WHERE `c`.`lft` > @lft
AND `c`.`rgt` < @rgt
;

关于mysql - 嵌套表产品查询mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com