Peut-on utiliser SQL pour trouver toutes les marques qui ont les catégories les plus courantes? Par exemple, la marque "Dove" peut avoir une catégorie de savon, soins de la peau, shampooing Il est de trouver toutes les marques qui a les catégories les plus correspondantes, en d'autres termes, les marques les plus similaires. Cela peut être fait par programmation en utilisant Ruby ou PHP: il suffit de prendre une marque, et de passer en revue toutes les autres marques, et de voir combien de catégories correspondent et de les trier. Mais s'il y a 2000 marques, il faut alors 2000 requêtes par marque. (sauf si nous pré-cache tous les résultats de la requête 2000, donc pour toutes les marques 2000, nous réutilisons ces résultats)Est-ce que les articles avec les descendants les plus communs peuvent être trouvés en utilisant SQL/MySQL?
Peut-il être fait par SQL/MySQL par 1 requête?
Say, la table a:
entities
--------
id
type = brand or category or product
name
entities_parent_child
--------------------
parent_id
child_id
le tableau ci-dessus a une entrée pour chaque parent = marque et de l'enfant = produit, et aussi une entrée pour chaque parent = catégorie et enfant = produit, si la marque a se rapporter à la catégorie par produits.
Je pense que la partie la plus difficile pour SQL est la suivante: trouvez tous les nombres de correspondance maximum et effectuez le tri par ces nombres.
Il s'agit d'une mauvaise conception de base de données - ce que vous décrivez n'est pas une véritable relation parent/enfant, où vous pouvez avoir un nombre indéfini de parents/enfants. Il est pratiquement toujours mauvais de créer quelque chose d'aussi générique qu'une table 'entities'. – wuputah
Le principal problème est que MySQL n'a pas de support de requête hiérarchique. –
@wuputah Je pense que la base de données contenait à l'origine uniquement des produits, catégories et marques. Mais les stocker dans la table des entités peut réutiliser certaines fonctions communes et les avoir comme polymorphes en termes de relation parent/enfant dans un arbre. Mais que se passe-t-il s'ils sont dans 3 tables séparées, est-il possible de trouver des marques similaires en utilisant 1 instruction SQL (ou quelques-unes)? –