私はSQL、より具体的にはmySQLでCASE/WHENを使用する方法を学ぼうとしています。
adhoc_itemとadhoc_vulnerabilityの2つのテーブルがあります。ahdoc_itemには、それに関連する1つのadhoc_vulnerabilityがあります。現在、adhoc_vulnerability には、脆弱性(original_vulnerability_id)が付加されている場合とされていない場合があります。
そうでない場合は、名前を返したいと思います。
表:(またはその関連部分)
ADHOC_ITEM
ADHOC_VULNERABILITY これは私のクエリです:
SELECT adi.name as item, CASE ahv.original_vulnerability_id
WHEN ISNULL(ahv.original_vulnerability_id) THEN ahv.name
ELSE 'foo'
END NAME
FROM adhoc_item adi
JOIN adhoc_vulnerability ahv ON ahv.id = adi.adhoc_vulnerability_id
そしてこれらは結果です!
これは少し複雑であることがわかりましたが、約2時間考えていましたが、最後の項目(original_vulnerability_idとしてNULLを含むadhoc_vulnerabilityを持つ)が正確に表示されるはずの値を示している理由についての説明が見つかりませんでした。その属性はnullではありません!
前もって感謝します。