Espérant que quelqu'un ici sera en mesure de fournir des conseils mysql ...Comment structurer une requête SELECT pour les éléments suivants
Je travaille sur un système de searchtag catégorique. J'ai des tables comme celles-ci:
EXERCISES
exerciseID
exerciseTitle
SEARCHTAGS
searchtagID
parentID (-> searchtagID)
searchtag
EXERCISESEARCHTAGS
exerciseID (Foreign key -> EXERCISES)
searchtagID (Foreign key -> SEARCHTAGS)
Les documents de recherche peuvent être disposés dans un arbre arbitrairement profond. Ainsi, par exemple, je pourrais avoir un arbre de searchtags qui ressemble à ceci ...
Body Parts
Head
Neck
Arm
Shoulder
Elbow
Leg
Hip
Knee
Muscles
Pecs
Biceps
Triceps
maintenant ...
Je veux sélectionner tous les searchtags dans une branche de l'arbre qui font référence au moins UN enregistrement dans le sous-ensemble d'enregistrements référencés par un mot-clé SINGLE dans une branche DIFFERENTE de l'arbre. Par exemple, disons que le champ de recherche "Arm" pointe vers un sous-ensemble d'exercices. Si l'un des exercices de ce sous-ensemble est également référencé par des balises de recherche de la branche "Muscles" de SEARCHTAGS, je voudrais les sélectionner. Donc, ma requête pourrait potentiellement renvoyer "Biceps", "Triceps".
Deux questions:
1) Qu'est-ce que la requête SELECT pour quelque chose comme ça ressemble? (Si une telle chose est possible sans trop ralentir, je ne sais pas trop par où commencer ...)
2) Y a-t-il quelque chose que je devrais faire pour ajuster mon infrastructure de données afin de garantir que cette requête se poursuivra? courir vite - même si les tables deviennent grandes?
Merci d'avance pour votre aide, c'est très apprécié.