0
これをSQL Serverで実行しようとしています。データを持つ最も単純なテーブル構造を以下に示します。OUTER JOINをNULLの代わりに0を返す方法
Table:Blog
BlogID, Title
----------------
1, FirstBlog
23, Pizza
Table:User
UserID, Name
-------------------
123, james
444, John
Table:UserBlogMapping
UserBlogMappingID, BlogID,UserID
----------------------------------
1, 1, 123
1つのSQLクエリでFormIDとUserBlogMappingIDを取得したいとします。提供されたUserIDがマッピングテーブルにない場合は、ゼロを返し、それ以外の場合は有効なuserBlogMappingIDを返します。私は以下のクエリを実行しようとしていますが、それは正しくありません。
SELECT
B.BlogID,
BUM.BlogUserMappingID
FROM
Blog AS B
LEFT JOIN BlogUserMapping AS BUM ON B.BlogID = BUM.BlogID
WHERE
(B.BlogID = 23) -- it exists in the table
AND BUM.userID = 444 -- it is NOT in the mmaping table but i want a ZERO return in such case
仮定: 我々はWHERE句で提供ユーザーIDは、常に有効なユーザーIDで、Userテーブルに存在すると仮定することができます。
あなたは私たちが「BUM.userID = 444」続けると確信していますLEFT JOIN句には含まれていませんか? – user1451111
@LukStormsいいえ、同じことをしません。同じ結果を達成する別の方法ではありません。 'LEFT JOIN'がマッチしたときに何が起こるか考えてみましょう。ただし、' BUM.userID <> 444'の行にのみマッチします。 – hvd
@hvdさて、私はそれを変更しました。投稿する前にマッピングテーブルの23でテストしてください。アドバイスをいただきありがとうございます。 – LukStorms