Mon schéma de base de données ressemble à ceci:récursive MySQL requête
Table t1:
id
valA
valB
Table t2:
id
valA
valB
Ce que je veux faire, est, pour un ensemble donné de lignes dans une de ces tables, trouver des lignes dans les deux tables qui ont le même valA ou valB (en comparant valA avec valA et valB avec valB, pas valA avec valB). Puis, je veux chercher les lignes avec le même valA ou valB que les lignes dans le résultat de la requête précédente, et ainsi de suite.
Example data:
t1 (id, valA, valB):
1, a, B
2, b, J
3, d, E
4, d, B
5, c, G
6, h, J
t2 (id, valA, valB):
1, b, E
2, d, H
3, g, B
Example 1:
Input: Row 1 in t1
Output:
t1/4, t2/3
t1/3, t2/2
t2/1
...
Example 2:
Input: Row 6 in t1
Output:
t1/2
t2/1
Je voudrais avoir le niveau de la recherche à ce que la ligne a été trouvée dans le résultat (par exemple dans l'exemple 1: Niveau 1 pour t1/2 et t2/1, niveau 2 pour t1/5, ...) A profondeur limitée de récursion est correct. Au fil du temps, je souhaite peut-être inclure plus de tables suivant le même schéma dans la requête. Ce serait bien si c'était facile d'étendre la requête à cette fin.
Mais ce qui importe le plus, c'est la performance. Pouvez-vous me dire la manière la plus rapide possible d'accomplir ceci?
Merci d'avance!
MySQL ne prend pas en charge de requête récursive. –
Vous devrez soit utiliser une application externe pour construire et exécuter des requêtes, soit écrire une procédure stockée. – Mchl
@OMG Poneys: Je sais. C'est pourquoi j'ai dit "une profondeur de récursion limitée est acceptable". Copier et coller est moche, mais c'est une solution. @Toms répond à des sons intéressants et plus élégants, je vais y jeter un coup d'oeil. – eWolf