SQL Union / Join Query - PullRequest
       21

SQL Union / Join Query

3 голосов
/ 11 августа 2010

У меня есть таблица профиля пользователя со столбцами User Name, Manager и многими другими полями, например, Amount.

Пример записей:

User    Manager  Amount
A       B       100
x       y       200
B       C       300
M       N       800
C       D       500
P       Q       1000
D       E       1000

Япытаясь получить результат, как показано ниже:

User    Manager Amount
A       B       100
B       C       300
C       D       500
D       E       1000

По сути, я просто хочу показать результаты каскадным способом, чтобы все строки выбирались до тех пор, пока не будут найдены все менеджеры в иерархии для пользователя.Может кто-нибудь помочь?

============

Обновление

Мне удалось решить проблему с помощью приведенного нижеquery:

WITH rec(c1, c2)
AS (SELECT c1, c2 FROM table WHERE c2 = 'A'
UNION ALL
SELECT table.c1, table.c2 FROM table, rec WHERE table.c2 = rec.c2)
SELECT c1, c2 FROM rec

Спасибо за помощь.Аби.

1 Ответ

1 голос
/ 11 августа 2010

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

В Oracle вы можете сделать что-то вроде:

SELECT USER, Manager, Amount FROM employees CONNECT BY PRIOR USER = Manager;

см. Несколько примеров в: http://www.ibm.com/developerworks/data/library/techarticle/dm-0510rielau/ для примеров db2

...