1

私は3つのテーブル、学生、スタッフ、交通機関を持っています。交通機関のテーブルには、交​​通機関があり、CandidateType列と区別されている学生とスタッフの記録があります。CandidateType = 0レコードがスタッフ テーブルから取得される必要がある場合、CandidateType=1レコードが学生テーブルから取得される必要がある場合。問題は、両方のテーブルの結合列の値が同じであることです。以下は私のテーブルの構造です。

|Staff Table|
-------------------------
Id | Name | Designation |
-------------------------
1  | ABC  | Teacher     |
2  | xyz  | Clerk       |
3  | DDD  | Teacher     |

Student Table
Id | Name | Class |
-------------------
1 | Ali   | 5th   |
2 | Khan  | 6th   |
3 | Jan   | 6th   |

Transport Table
Id | CandidateId | Candiadate Type | VehicleId
----------------------------------------------
1  |  1          | 0               |  1
2  |  3          | 1               |  1
3  |  2          | 1               |  1

VehicleId=1. テーブルの候補IDtransportは、スタッフと学生の両方のテーブルで同じです。車両1のレコードを取得する方法studentsstaffどんな助けでも.....

4

2 に答える 2

4
SELECT  a.ID,
        CASE WHEN CandidateType = 0 
            THEN b.Name
            ELSE c.Name
        END AS Name
FROM    Transport a
        LEFT JOIN Staff b
            ON  a.CandidateID = b.ID
        LEFT JOIN   Student c
            ON a.CandidateID = c.ID
WHERE   a.VehicleID = 1

出力

╔════╦══════╗
║ ID ║ NAME ║
╠════╬══════╣
║  1 ║ ABC  ║
║  2 ║ Jan  ║
║  3 ║ Khan ║
╚════╩══════╝
于 2013-04-18T10:50:00.843 に答える