Informants
テーブルを対応するものに結合したいHandlers
:
Informants Handlers
+------------------------+ +----------------------------------------+
|Name Type | | HandlerID Name HandlerType |
|------------ ---------- | |---------- ----------------------------|
|Ronald Regan Politician | | 1 J. Edgar FBI |
|Sal Vitale MOB | | 2 Charles Cabell CIA |
|Elia Kazan Famous | | 3 Allen Dulles CIA |
|Mrs. Kravitz Citizen | | 7 Joe McCarthy Congressman |
|White Pawn Foreign | +----------------------------------------+
+------------------------+
私は、あなたが知らせることができる人々のセットを誰が決定するかに応じて、次のルールに従います。
- 政治家 --> CIA
- ギャング、著名人 --> FBI
- 一般市民→地元警察署
- 外国のエージェント --> NSA に頼ることができます
そこで、情報提供者と情報提供先を照合します。
SELECT
Informants.Name AS RatName,
Informants.Type AS RatType,
Handlers.Name AS GmanName,
Handlers.HandlerID
FROM Informants
LEFT JOIN Handlers
ON (
(Informants.Type IN ('Politician') AND Handlers.HandlerType = 'CIA')
OR
(Informants.Type IN ('MOB', 'Famous') AND Handlers.HandlerType = 'FBI')
OR
(Informants.Type IN ('Citizen') AND Handlers.HandlerType = 'Police')
OR
(Informants.Type IN ('Foreign') AND Handlers.HandlerType = 'NSA')
)
そして、私は結果を得る:
RatName RatType GmanName HandlerID
============= ============== ============== =========
Ronald Regan Politician Charles Cabell 2
Ronald Regan Politician Allen Dulles 3
Sal Vitale MOB J. Edgar 1
Elia Kazan Famous J. Edgar 1
Mrs. Kravitz Citizen NULL NULL
White Pawn Foreign NULL NULL
ここで、Ronald Reganには2 つの構成済みハンドラーがあり、彼が頼ることができることがわかります。その間:
- クラヴィッツ夫人と
- ホワイトポーン
通知できるハンドラーがありません。
だから私が今欲しいのは、ハンドラーのフォールバックリストです。Politician
またはエージェントの場合は、ハンドラーForeign
をフォールバックしてください。FBI
これは、理想的には私の結果セットが次のようになることを意味します。
RatName RatType GmanName HandlerID
============= ============== ============== =========
Ronald Regan Politician Charles Cabell 2
Ronald Regan Politician Allen Dulles 3
Sal Vitale MOB J. Edgar 1
Elia Kazan Famous J. Edgar 1
Mrs. Kravitz Citizen NULL NULL
White Pawn Foreign J. Edgar 1
それが私の質問です。以前の参加が何にも一致しなかったという基準に参加する必要があります。
問題
私が回避しようとしている問題は次のとおりです。
- 主要なケースが結合
Politicians
しますFBI
- バックアップケースが
Politicians
参加CIA
そして、私は次のようなものになります:
RatName RatType GmanName HandlerID
============= ============== ============== =========
Ronald Regan Politician Charles Cabell 2
Ronald Regan Politician Allen Dulles 3
Ronald Regan Politician J. Edgar 1
Sal Vitale MOB J. Edgar 1
Elia Kazan Famous J. Edgar 1
Mrs. Kravitz Citizen NULL NULL
White Pawn Foreign J. Edgar 1
そして、Ronald Reganは、報告先がすでにいるときに、新しい「代替」エントリを取得します。