Nous utilisons un modèle hybride de jeux imbriqués pour permettre à un enfant d'avoir plusieurs parents. Il s'agit d'une extension du modèle de jeu imbriqué décrit dans le blog Mike Hillyers: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ - cela pourrait aider à expliquer certains des noms de colonnes. Je suis assez nouveau à SQL mais j'ai étudié des jointures, des sous-requêtes etc. et rien ne semble m'offrir le résultat dont j'ai besoin. Je m'attends à la réponse est assez simple et sera presque certainement un LEFT JOIN
mais je ne peux pas mettre le doigt dessus.Utilisation des résultats d'une requête dans une autre
J'ai une table simple appelée 'nested_parts' avec 5 colonnes: 'tree_id', 'part_id', 'lft', 'rgt' et 'mapping'.
La requête suivante renvoie les valeurs que je souhaite comparer dans la deuxième requête.
SELECT * FROM nested_parts WHERE part_id = 125
Plus précisément, je sais maintenant qui est tree_id cette partie # 125 existe et les valeurs de LFT et Rgt pour chaque tree_id.
Maintenant, j'ai besoin de connaître tous les part_id qui se trouvent dans le tableau des résultats de tree_id que j'ai tirés plus tôt.
J'ai utilisé cette sous-requête pour cela:
SELECT * FROM nested_parts
WHERE tree_id = ANY (SELECT tree_id AS tbl FROM nested_parts WHERE part_id = 125)
Maintenant je dois savoir qui de part_id ont LFT et les valeurs TGB qui ne sont pas entre les valeurs de LFT et Rgt de la partie n ° 125 dans le cadre de chaque tree_id . Ce serait facile si j'avais deux tables à comparer, ou si je pouvais utiliser des tables virtuelles mais cela ne semble pas possible ici sans boucle. Toute aide reçue avec gratitude, mais s'il vous plaît apprécier que je suis stupide pas paresseux, et bien que j'ai lu beaucoup sur UNIONS, JOINS, AYANT, O WH, SELECT (SELECT), avec la complexité des données sur le dessus, je trouve c'est extrêmement déroutant.
Cordialement,
James
Hey James, pouvez-vous mettre sqlfiddle @: http://sqlfiddle.com/ –
Ceci est une excellente question , bien que libellé un peu confus à la fin là. – Matt
J'ai supprimé la balise PHP car, bien que vous l'implémentiez en PHP, c'est une question mysql. – Matt