2010-02-23 6 views
1

J'ai 2 tables comme suit (données-échantillon indiquées):requête simple récursive

TableName: A 
ID    Type 
1 Bug 
2 Requirement 
3 Task 
4 Specification 
5 Bug 
6 Specification 
7 Production Issue 
8 Production Issue 
9 Bug 
10   Task 

Tablename: B 
ID RelatedID 
1 2 
1 7 
5 8 
5 4 
9 6 
9 10 

Je veux aller chercher tous les bugs qui ont atleast un problème de production connexes ou des bugs qui ont pas de problème de production connexes.

sortie prévue sera comme indiqué ci-dessous (puisque ce sont les bugs avec au moins un problème de production lié)

output 
1 
5 
+0

Pas très clairement ce que vous cherchez, peut-être inclure un exemple de votre sortie attendue? – Sparky

+0

Je voudrais affiner comment vos tables se connectent ensemble, car il se trouve maintenant ce n'est pas très clair, ce qui est id connexe, pourquoi les clés primaires de la table b sont répétées et pas incrémenté automatiquement? – Jimmy

+0

Ceci est juste une jointure, il n'est pas récursif en aucune façon. Si vous vouliez énumérer * toutes * les questions directement et indirectement liées, * cela * serait récursif. – Aaronaught

Répondre

1

alias sont la voie à suivre ici

SELECT pri.Type AS 'Primary Type', rel.Type AS 'Related Type' 
FROM A AS pri 
    INNER JOIN B ON B.ID = pri.ID 
    INNER JOIN A AS rel ON B.RelatedID = rel.ID 
WHERE pri.Type = 'Bug' AND rel.Type = 'Production Issue;