私は従業員情報が格納されているテーブル(EmpInfo)を持っています。ここでは、次のフィールドがあります複合SQL自己結合
EMPLID - VARCHAR(11)(PK)
NAME - VARCHAR(50)
POSITION_NBR - VARCHAR(8)
CREPORTS5 - CHAR(8)
CREPORTS6 - CHAR(8)
CREPORTS7 - CHAR(8)
CREPORTSフィールドは、コマンドチェーン内のPOSITION_NBRフィールドを参照します。 - CEO
ジョン・スミス - Managerの
ジャック・ジョーンズ:私はCREPORTSの名前の代わりに、POSITION_NBR
階層構造を返すことができるSQLクエリを記述しようとしている
サラテスト - スーパーバイザー
スージーBlerg - 労働者
マイク・マーティン - 労働者
--------------------------------------------------------------------------------
| EMPLID | NAME | POSITION_NBR | CREPORTS5 | CREPORTS6 | CREPORTS7 |
--------------------------------------------------------------------------------
| 1234 | John Smith | 11111 | 22222 | NULL | NULL |
--------------------------------------------------------------------------------
| 2345 | Jack Jones | 22222 | NULL | NULL | NULL |
--------------------------------------------------------------------------------
| 3456 | Sarah Test | 33333 | 22222 | 11111 | NULL |
--------------------------------------------------------------------------------
| 4567 | Suzy Blerg | 44444 | 22222 | 11111 | 33333 |
--------------------------------------------------------------------------------
| 5678 | Mike Martin | 55555 | 22222 | 11111 | 33333 |
--------------------------------------------------------------------------------
私は私の最初の、SQLの男のあまりないんだけど試みは次のようになりました:
SELECT EmpInfo.EMPLID
EmpInfo.CREPORTS5,
CAST
((SELECT TOP (1) NAME
FROM EmpInfo AS subInfo
WHERE (subInfo.POSITION_NBR = EmpInfo.CREPORTS5)) AS varchar(50)) AS CREPORTS5_NAME
FROM EmpInfo
このクエリは機能しますが、300kレコードに対して実行すると時間がかかります。