点击一个分类,把当前分类及其所有子分类的所有产品列出来
上面是分类表,产品表就是 关联 分类表的 cate_id ,确定产品所属的分类
现在我想要的效果是 点击一个分类,把当前分类及其所有子分类的所有产品列出来
请大神指教
想的头都破了,递归?还是?怎么弄呢?
回复讨论(解决方案)
点击了分类,于是就知道了分类号
查询数据库,凡是父类号为这个分类号的就是他的子分类了
点击了分类,于是就知道了分类号
查询数据库,凡是父类号为这个分类号的就是他的子分类了
我不是要子分类 我是要 所有子分类下面的产品
奇怪了,有了子分类号,还愁子分类下面的产品吗?
不知道你数据量大不大
小企业站的话,得到父分类ID后,查到所有子分类ID,然后合并到一起:2,5,6,7,8这种
再到产品表sql语句用in关键字查出来,怎么用,搜一下吧...
不清楚in能不能用到索引?
如果数据量比较大,就用冗余换效率
给分类表加一个floor字段,父分类就写0,1级子分类就写1,2级子分类写2。。。
假设你有3层分类,那么在产品表加3个字段,cate,cate1,cate2
产品属于哪个子分类,就把从父到2级子 3个字段都填满
筛选时根据传入的cateid,先查出这个分类的floor,然后查出他的所有上级分类id
剩下就是把所有得到的id作为条件筛选了
这里有个关键,要建一个BTREE索引,以cate到cateN的顺序都包括进来
同数据量方法2要快很多,但他的缺点是子分类移动时还要改产品表
奇怪了,有了子分类号,还愁子分类下面的产品吗?
这里还涉及到子分类的子分类 是所有后代分类,所以我最先想到的就是 递归
如果单单是一层子分类当然好办了,可是无限极分类,子分类层数个数都未知
我想到了一个方案了
不知道你数据量大不大
小企业站的话,得到父分类ID后,查到所有子分类ID,然后合并到一起:2,5,6,7,8这种
再到产品表sql语句用in关键字查出来,怎么用,搜一下吧...
不清楚in能不能用到索引?
如果数据量比较大,就用冗余换效率
给分类表加一个floor字段,父分类就写0,1级子分类就写1,2级子分类写2。。。
假设你有3层分类,那么在产品表加3个字段,cate,cate1,cate2
产品属于哪个子分类,就把从父到2级子 3个字段都填满
筛选时根据传入的cateid,先查出这个分类的floor,然后查出他的所有上级分类id
剩下就是把所有得到的id作为条件筛选了
这里有个关键,要建一个BTREE索引,以cate到cateN的顺序都包括进来
同数据量方法2要快很多,但他的缺点是子分类移动时还要改产品表
我用的是无限极分类,子分类层次不一定的,子分类下面可能还有子分类,所以我最先想到的是递归,后来觉得要从数据库设计入手,就在分类表加了一个路径字段
如果你一开始是全部取出的话,那么就不存在“点击一个分类,把当前分类及其所有子分类的所有产品列出来”这么一说了
既然是点击才出来,那自然是出来的是一级子分类,再点再出。这样才是统一的风格
就是你一次性全取出来,也是按父分类指示的一级一级的读
不需要递归啊,你可以到上面一个表里“层次结构”那个字段里面找所点击分类的分类号,凡是有的都是子孙后代分类了。
比如说点击的分类,id号为18,就可以用cate_path like "%18-%" or cate_path like "%-18%"来筛选。
无限级这么关键的词你居然没说!
我觉得思路还是4楼的第二种方法,把欲查询的cateid的所有父分类id也都折腾出来,合并到一起去查
用 , 或者 - 应该都可以吧
产品的cateid字段保存这样的格式:1,5,8,21 是从1级分类到N级分类
如果想查cateid=8的所有产品,那先找出5和1这2个上级分类,生成字符串1,5,8
然后查询语句用 cateid like '$cateid %',当然这个字段单独加个索引
补充下
如果想查cateid=8的所有产品,那先找出5和1这2个上级分类,生成字符串1,5,8
这一步的字符串可以写在数据库中,也可以把所有分类id对应的查询字符串缓存起来,实际运行时间可以跳过了^ ^
我觉得你的筛选方式会出问题的。如果是id为8的呢?"%8%"这样的表达式会把18或者81、82等等都包含进去的。
这个方法再把表达式改一下就好了啊。如果id为0的也可能被点击到的话,最后in里面除了搜索出来的之外,就得多包含一个当前点击的id自己。否则都不需要加别的了,因为只有0才会前后都不带“-”出现。
无限级这么关键的词你居然没说!
我觉得思路还是4楼的第二种方法,把欲查询的cateid的所有父分类id也都折腾出来,合并到一起去查
用 , 或者 - 应该都可以吧
产品的cateid字段保存这样的格式:1,5,8,21 是从1级分类到N级分类
如果想查cateid=8的所有产品,那先找出5和1这2个上级分类,生成字符串1,5,8
然后查询语句用 cateid like '$cateid %',当然这个字段单独加个索引
用-还是用,没有区别啊,而且也不需要查找父分类。
这个简单。就一直查询下去。
由主分类ID查询出子分类,又从子分类ID查询出第三级,又从第三级ID查询出第四级……
当然,你的服务器能经得起这样折腾才行。
不管你是不是无限级,都是这样的查询。没有捷径可走。
这个简单。就一直查询下去。
由主分类ID查询出子分类,又从子分类ID查询出第三级,又从第三级ID查询出第四级……
当然,你的服务器能经得起这样折腾才行。
不管你是不是无限级,都是这样的查询。没有捷径可走。
他有一个cate_path字段啊,不需要这样的。
这个方法再把表达式改一下就好了啊。如果id为0的也可能被点击到的话,最后in里面除了搜索出来的之外,就得多包含一个当前点击的id自己。否则都不需要加别的了,因为只有0才会前后都不带“-”出现。
兄台想的果然周全 180 也包含18,确实是要加杠杠
刚在公司没时间细看
你们讨论的是在分类上加path,然后查询产品的sql语句用in?
无限级分类用in那效率会不会...in一大堆ID
还好in可以用到索引,不知道mysql有没有为in排序,否则索引树要从头到底遍历一次,然后复杂度还要乘以id的个数
我在4楼和10楼说的都是加速查询的方案
只是实现的话怎么都有办法
获得cateid后从内存缓存中(编辑分类时一次性生成)用php的变量hash读取他的分类路径,这一步几乎不耗时间
然后直接用路径字符串借助索引树一次性定位到全部数据集,速度很快
很抱歉天气热有点浮躁,如果有错误请指正

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans iOS 17, vous pouvez définir plusieurs minuteries sur votre iPhone à l'aide de l'application Horloge ou utiliser Siri pour le régler en mode mains libres. Nous discutons des deux dans cet article. Jetons un coup d'oeil à eux. Définir plusieurs minuteries sur iPhone à l'aide de l'application Horloge Ouvrez l'application Horloge sur votre iPhone et appuyez sur l'onglet Minuteries dans le coin inférieur droit. Maintenant, réglez les heures, les minutes et les secondes. Vous pouvez utiliser les options « Étiquette » et « Quand la minuterie se termine-t-elle » pour définir un nom pour la minuterie et une tonalité préférée lorsque la minuterie se termine. Cela vous aidera à différencier les minuteries. Une fois terminé, cliquez sur le bouton "Démarrer". Ensuite, cliquez sur l'icône "+" dans le coin supérieur droit. Maintenant, répétez les étapes ci-dessus pour définir plusieurs minuteries sur iPhone. Vous pouvez également parcourir

Classification et analyse de l'utilisation des commentaires JSP Les commentaires JSP sont divisés en deux types : commentaires sur une seule ligne : se terminant par, une seule ligne de code peut être commentée. Commentaires multilignes : commençant par /* et se terminant par */, vous pouvez commenter plusieurs lignes de code. Exemple de commentaire sur une seule ligne Exemple de commentaire sur plusieurs lignes/**Ceci est un commentaire sur plusieurs lignes*Peut commenter plusieurs lignes de code*/Utilisation des commentaires JSP Les commentaires JSP peuvent être utilisés pour commenter le code JSP afin de le rendre plus facile à lire

Comment créer une liste d'épicerie sur iPhone sous iOS17 Créer une liste d'épicerie dans l'application Rappels est très simple. Il vous suffit d'ajouter une liste et de la remplir avec vos éléments. L'application trie automatiquement vos articles en catégories et vous pouvez même travailler avec votre partenaire ou partenaire d'appartement pour dresser une liste de ce que vous devez acheter dans le magasin. Voici les étapes complètes pour ce faire : Étape 1 : activer les rappels iCloud Aussi étrange que cela puisse paraître, Apple dit que vous devez activer les rappels d'iCloud pour créer une liste d'épicerie sur iOS17. Voici les étapes à suivre : Accédez à l'application Paramètres sur votre iPhone et appuyez sur [votre nom]. Ensuite, sélectionnez je

Les paramètres du produit font référence à la signification des attributs du produit. Par exemple, les paramètres vestimentaires incluent la marque, le matériau, le modèle, la taille, le style, le tissu, le groupe applicable, la couleur, etc. ; les paramètres alimentaires incluent la marque, le poids, le matériau, le numéro de licence sanitaire, le groupe applicable, la couleur, etc. ; inclure la marque, la taille, la couleur, le lieu d'origine, la tension applicable, le signal, l'interface et la puissance, etc.

Après la sortie de Xiaomi 14Ultra, de nombreux amis qui aiment prendre des photos ont choisi de passer des commandes. Xiaomi 14Ultra offre plus de choix, comme la fonction miroir photo, et vous pouvez choisir d'activer la fonction « rotation du miroir photo ». De cette façon, lorsque vous prenez des photos, vous pouvez prendre des selfies comme vous en avez l'habitude. Mais comment le Xiaomi 14Ultra doit-il configurer le miroir de l'appareil photo ? Comment configurer le miroir de la caméra sur Xiaomi Mi 14Ultra ? 1. Ouvrez l'appareil photo du Xiaomi 14Ultra. 2. Recherchez « Paramètres » sur l'écran. 3. Sur cette page, vous verrez une option intitulée « Paramètres de capture ». 4. Cliquez sur cette option, puis recherchez l'option « Photo Mirror » dans le menu déroulant. 5. Ouvrez-le simplement. Xiaomi 14U
![Comment configurer ma carte de visite dans Contacts sur iPhone [2023]](https://img.php.cn/upload/article/000/465/014/169538863364905.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Avec Mes cartes de visite dans iOS, vous pouvez créer une carte de contact personnalisée que Siri et d'autres services reconnaissent et associent à vous et à votre numéro de téléphone. Avec l'introduction des affiches de contact dans iOS17, Mes cartes deviennent très importantes car elles sont désormais utilisées pour créer vos affiches de contact. Si vous avez hâte de mettre en place votre affiche de contact, vous devez commencer par configurer Ma carte de visite. Nous expliquerons comment créer une carte de visite Ma carte de visite et comment la faire fonctionner correctement avec Siri et votre affiche de contact. Comment configurer mes cartes de visite dans les contacts sur iPhone [2023] Si vous configurez mes cartes de visite sur votre iPhone pour la première fois, vous devez le faire via l'application Contacts uniquement.
![Comment désactiver les alarmes sur iPhone [2023]](https://img.php.cn/upload/article/000/465/014/169259550735100.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Depuis l’avènement des smartphones, ils ont sans doute remplacé les réveils. Si vous possédez un iPhone, vous pouvez utiliser l'application Horloge pour définir facilement autant d'alarmes à plusieurs reprises tout au long de la journée. L'application vous permet de configurer l'heure de l'alarme, la tonalité, la fréquence de répétition et si vous souhaitez les retarder à l'aide de l'option Snooze. Si vous souhaitez désactiver l'alarme que vous avez définie, l'article suivant devrait vous aider à désactiver et supprimer les alarmes régulières et les alarmes de réveil sur votre iPhone. Comment désactiver une alarme régulière sur iPhone Par défaut, lorsque vous ajoutez une alarme sur l'application Horloge ou demandez à Siri d'ajouter une alarme pour vous, vous créez en fait une alarme normale. Vous pouvez créer autant de réveils sur votre iPhone que vous le souhaitez et les mettre

iOS17 est enfin là et inclut de nombreuses nouvelles fonctionnalités. Apprenons comment modifier les photos des contacts sur iPhone dans le didacticiel d'aujourd'hui. Le récent événement WWDC 2023 d'Apple a dévoilé une multitude de produits passionnants et de mises à jour logicielles à venir. L'une des fonctionnalités notables d'iOS 17 est la possibilité de personnaliser les photos et les affiches de vos contacts, offrant ainsi un moyen unique de saluer les autres lorsqu'ils reçoivent un appel de votre part sur leur iPhone. Cette fonctionnalité innovante pour iOS est conçue pour rendre les appels téléphoniques plus personnels et conviviaux, en vous permettant de choisir comment ils apparaissent sur l'écran du destinataire. Si vous avez hâte de mettre la main sur cette nouvelle fonctionnalité et de saluer vos proches de manière personnalisée lors de vos appels, voici comment l'ajouter à votre iPhone
