2010-02-23 3 views
1

У меня есть 2 таблицы следующим образом (данные образца показан):простого рекурсивный запрос

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 

Я хочу, чтобы извлечь все ошибки, которые имеют по крайней мере один связанный с этим вопросом производства или ошибок, которые не имеют никакого связанного с этим вопроса производства.

Ожидаемый результат будет, как показано ниже (так как эти ошибки, по крайней мере один связанный с этим вопрос производства)

output 
1 
5 
+0

Не очень понятно, что вы ищут, возможно, включают пример вашего ожидаемого результата? – Sparky

+0

Я бы уточнил, как ваши таблицы соединяются вместе, поскольку он стоит сейчас, это не очень понятно, что связано с id, почему первичные ключи для таблицы b повторяются, а не автоматически увеличиваются? – Jimmy

+0

Это просто соединение, оно не является рекурсивным. Если вы хотите перечислить * все * вопросы прямого и косвенного характера, *, которые * будут рекурсивными. – Aaronaught

ответ

1

Псевдонимы путь здесь

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; 
Смежные вопросы