字符串不重复拼接法?
比如有以下数据表结构
id lei shuxing miaoshu
1 大象 眼睛 大大的
2 大象 眼睛 圆圆的
3 大象 鼻子 高高的
4 熊 鼻子 小小的
5 大象 腿 长长的
6 熊 腿 细细的
7 大象 嘴 小小的
第二列和第三列和第四列都可能有n多种情况,求一个能实现出以下要求组合的php方法,要求是每个描述是一个lei,涵盖shuxing中的3项(不够三项有几个算几个比如熊),以生成对某个动物的不同描述
举例说明:按以上数据的结果应该是
大象 眼睛大大的,鼻子高高的,腿长长的
大象 眼睛圆圆的,鼻子高高的,腿长长的
大象 眼睛大大的,鼻子高高的,嘴小小的
。。。
由于能组合出不少,就没法一一列出了,通过以上的例子希望朋友们能理解
回复内容:
比如有以下数据表结构
id lei shuxing miaoshu
1 大象 眼睛 大大的
2 大象 眼睛 圆圆的
3 大象 鼻子 高高的
4 熊 鼻子 小小的
5 大象 腿 长长的
6 熊 腿 细细的
7 大象 嘴 小小的
第二列和第三列和第四列都可能有n多种情况,求一个能实现出以下要求组合的php方法,要求是每个描述是一个lei,涵盖shuxing中的3项(不够三项有几个算几个比如熊),以生成对某个动物的不同描述
举例说明:按以上数据的结果应该是
大象 眼睛大大的,鼻子高高的,腿长长的
大象 眼睛圆圆的,鼻子高高的,腿长长的
大象 眼睛大大的,鼻子高高的,嘴小小的
。。。
由于能组合出不少,就没法一一列出了,通过以上的例子希望朋友们能理解
建造者模式http://www.runoob.com/design-pattern/builder-pattern.html
<code>select lei,group_concat(concat(shuxing,miaoshu)) result from tb group by lei</code>
这样可以返回
lei result
大象 眼睛大大的,鼻子高高的,腿长长的, 嘴小小的
熊 鼻子小小的,腿细细的
...
返回到后台通过逗号分割result,然后随机拼接三条结果
---以上个人见解,欢迎点评---
其实还是没太看懂题主到底是问php问题还是sql问题。
不过感觉sql并不擅长解决这类问题,那我就假设是编程问题吧。
由于不懂php,所以仅提供解题思路:
1、根据lei查询所有符合条件的数据,例如:
SELECT lei, shuxing, miaoshu FROM animal WHERE lei IN ('大象', '熊');
2、在代码里先后对lei
属性和shuxing
属性做group by
操作,如下:
{ "大象": { "眼睛": ["大大的", "圆圆的"], "鼻子": ["高高的"], "腿": ["长长的"], "嘴": ["小小的"] }, "熊": { ... } }
3、对2中的数据进行笛卡尔积运算,done.
PS:其实是表结构设计得不好,应该拆分成animal
表(animal_id
, animal_name
)和animal_prop
表(animal_prop_id
, animal_id
, prop_name
, prop_desc
)。
可以采用分表,分成三张表。table1:用来记录lei的信息 table2:用来记录shuxing,table1的ID table3:
用来记录miaoshu,table2的ID,用着三张表进行关联查询
各位朋友,有能帮忙解决一下的没?
对啊 上楼说的是个思路
分表
然后根据表进行关联查询
把类单独拿出来建一张表
类的属性再建一张表(1对多关系)
python 版本:
<code>from collection import defaultdict anims = defaultdict(lambda : defaultdict(lambda : defaultdict(set))) for lei, shuxing, miaoshu in db.select('table', ['lei', 'shuxing', 'miaoshu']): anims[lei][shuxing].add(miaoshu) # enum all descs for lei, v1 in anims.items(): print 'desc lei: ', lei shuxings = [(k, list(v)) for k,v in v1.items()] shuxing_size = len(shuxings) if shuxing_size == 0: pass elif shuxing_size == 1: for i in range(shuxing_size): for ii in range(shuxings[i][1]): print shuxings[i][0], shuxings[i][1][ii] elif shuxing_size == 2: for i in range(shuxing_size): for j in range(i+1, shuxing_size): for ii in range(shuxings[i][1]): for jj in range(shuxings[j][1]): print shuxings[i][0], shuxings[i][1][ii], shuxings[j][0], shuxings[j][1][jj] else: for i in range(shuxing_size): for j in range(i+1, shuxing_size): for k in range(j+1, shuxing_size): for ii in range(shuxings[i][1]): for jj in range(shuxings[j][1]): for kk in range(shuxings[k][1]): print shuxings[i][0], shuxings[i][1][ii], shuxings[j][0], shuxings[j][1][jj], shuxings[k][0], shuxings[k][1][kk]</code>

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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Sujets chauds











MySQL et PHPMyAdmin sont de puissants outils de gestion de la base de données. 1) MySQL est utilisé pour créer des bases de données et des tables et pour exécuter des requêtes DML et SQL. 2) PHPMYADMIN fournit une interface intuitive pour la gestion des bases de données, la gestion de la structure de la table, les opérations de données et la gestion de l'autorisation des utilisateurs.

Ce qui est encore populaire, c'est la facilité d'utilisation, la flexibilité et un écosystème fort. 1) La facilité d'utilisation et la syntaxe simple en font le premier choix pour les débutants. 2) étroitement intégré au développement Web, excellente interaction avec les demandes HTTP et la base de données. 3) L'énorme écosystème fournit une multitude d'outils et de bibliothèques. 4) La nature active et la nature open source les adaptent à de nouveaux besoins et tendances technologiques.

Par rapport à d'autres langages de programmation, MySQL est principalement utilisé pour stocker et gérer les données, tandis que d'autres langages tels que Python, Java et C sont utilisés pour le traitement logique et le développement d'applications. MySQL est connu pour ses performances élevées, son évolutivité et son support multiplateforme, adapté aux besoins de gestion des données, tandis que d'autres langues présentent des avantages dans leurs domaines respectifs tels que l'analyse des données, les applications d'entreprise et la programmation système.

IIS et PHP sont compatibles et sont implémentés via FastCGI. 1.IIS Transforme la demande de fichier .php au module FastCGI via le fichier de configuration. 2. Le module FastCGI démarre le processus PHP pour traiter les demandes d'amélioration des performances et de la stabilité. 3. Dans les applications réelles, vous devez prêter attention aux détails de la configuration, débogage des erreurs et optimisation des performances.

Dans MySQL, la fonction des clés étrangères est d'établir la relation entre les tables et d'assurer la cohérence et l'intégrité des données. Les clés étrangères maintiennent l'efficacité des données grâce à des contrôles d'intégrité de référence et aux opérations en cascade. Faites attention à l'optimisation des performances et évitez les erreurs courantes lorsque vous les utilisez.

Gérer en toute sécurité les fonctions et les expressions régulières dans JSON dans le développement frontal, JavaScript est souvent nécessaire ...

La principale différence entre MySQL et MARIADB est les performances, les fonctionnalités et la licence: 1. MySQL est développé par Oracle, et MariADB est sa fourche. 2. MariaDB peut mieux fonctionner dans des environnements à haute charge. 3.MariaDB fournit plus de moteurs et de fonctions de stockage. 4.MySQL adopte une double licence et MariaDB est entièrement open source. L'infrastructure existante, les exigences de performance, les exigences fonctionnelles et les coûts de licence doivent être pris en compte lors du choix.

SQL est un langage standard pour gérer les bases de données relationnelles, tandis que MySQL est un système de gestion de bases de données qui utilise SQL. SQL définit les moyens d'interagir avec une base de données, y compris les opérations CRUD, tandis que MySQL implémente la norme SQL et fournit des fonctionnalités supplémentaires telles que les procédures stockées et les déclencheurs.
