2
我有3個表,Category
Step
和CategoryStep
,其中CategoryStep
將兩個其他表關聯在一起。我想根據StepID返回所有具有真/假列的類別,無論該關係是否存在於CategoryStep
中。檢查是否存在關係並返回true或false
的表的模式很簡單,
Category:
CategoryID | CategoryName
Step:
StepID | StepName
CategoryStep:
CategoryStepID | CategoryID | StepID
當試圖基於StepID得到的結果,我只得到存在的關係,而不是那些沒有。
SELECT [CategoryID], [Category], CAST(CASE WHEN [CategoryStep].[CategoryStep] IS NULL THEN 0 ELSE 1 END AS BIT) AS related
FROM Category
LEFT JOIN CategoryStep ON Category.CategoryID = CategoryStep.CategoryID
INNER JOIN Step ON CategoryStep.StepID = Step.StepID
WHERE Step.StepID = 2
步驟表:
|StepID | StepName
|-------|---------
| 1 | StepOne
| 2 | StepTwo
| 3 | StepThree
分類表:
| CategoryID | CategoryName
|------------|-------------
| 1 | Holidays
| 2 | States
| 3 | Cities
| 4 | Animals
| 5 | Food
CategoryStep表
| CategoryStepID | CategoryID | StepID
|----------------|------------|-------
| 1 | 1 | 1
| 2 | 1 | 2 <--
| 3 | 2 | 1
| 4 | 2 | 3
| 5 | 3 | 2 <--
| 6 | 4 | 1
| 7 | 4 | 2 <--
| 8 | 4 | 3
| 9 | 5 | 1
| 10 | 5 | 3
所以,如果我一直在尋找StepID = 2的結果表我我期待的是:
| CategoryID | Category | Related
|------------|----------|--------
| 1 | Holidays | 1
| 2 | States | 0
| 3 | Cities | 1
| 4 | Animals | 1
| 5 | Food | 0
仍看不到非相關類別,只有有關係的類別。我認爲這是解決問題的方法,但我錯過了一些東西。 – Alex
請向我們展示一些示例數據。 –
@Alex我更新了我的答案,它現在應該可以工作。 –