1

SQL文を実行したいのですが、テーブルが2つあります

Table Name      Description
*********      *********
H_person    Employee Data
Modelorg    Position Data

「誰と誰がつながっているか」を示すSQLを書きたい。h_person テーブル内

Fıeld Name      Description
*********      *********
p_no        Employee ID
P_ad        Employee Name
P_soyad Employee Surname
P_pzsyn Employee Position ID

Modelorg テーブル内

Fıeld Name      Description
*********      *********
Pozkod      Position ID
Pozad       Position Name
USTPOZKOD   the upper position (POZKOD connected to USTPOZKOD)

USTPOZKODは同時にPOZKODでもあり、階層的なつながりがあります。

  1. 個人ID、氏名、姓、役職名、役職名、管理者ID、管理者名-姓(役職ID保有者)を記載したレポートを作成したいと思います。

  2. さらに、Upperpostion が空の場合があり、レポートを実行すると null になります。ルールを追加したい、上層部が空なら2段上層部員を連れてくる

    H_person テーブルの最初のデータ * ** * ** P_no=14556 P_ad=John p_Soyad= Onel P_Pzsyn= 72878 /Account Specialist Second Data P_no=14656 P_ad=Sara p_Soyad= Yildiz P_Pzsyn= 5455 /Account Manager * ** * ** In Modelorg Table Pozkod=72878 Pozad=Account Specialist Ustpozkod=5455 (Account Manager) USTPOZKOD は同時に pozkod です。

  3. p_no、p_ad、p_soyad、Pozad、USTPOZKOD を選択します (私たちは pozkod を USTPOZKOD に接続しました。h_person、modelorg からこの USTPOZKOD(NAME, Surname) を持っていたのは誰ですか)。

  4. USTPOZKOD も POZKOD と同じです。

4

1 に答える 1

1

再帰クエリを作成するには、共通テーブル式 (CTE)を使用する必要があります。

例:

WITH #rec AS
(
    SELECT ID, ParentID
    FROM RecTable
    WHERE ParentID = 0

    UNION ALL

    SELECT R.ID, R.ParentID
    FROM RecTable R
    INNER JOIN #rec P ON R.ParentID = P.ID
)
SELECT *
FROM #rec
于 2012-09-24T12:02:53.040 に答える