特定の型のパラメータを提供するユーザーに基づいて結果を取得できるストアドプロシージャがあります。ユーザーはnullパラメータを指定することもできます。この場合、すべての結果が返され、フィルタは無視されます。ここでNullable列のSQL LEFT OUTER JOINと結合の使用
は、ストアドプロシージャです:
CREATE PROCEDURE GetHousesByType
(
@HouseTypeParameter INT = NULL,
)
AS
BEGIN
SELECT HouseId, HouseType, HouseName
FROM HouseTable MAIN
LEFT JOIN HouseTypes HOTP ON MAIN.HouseType = HOTP.HouseTypeId
WHERE MAIN.HouseType = COALESCE(@HouseTypeParameter, MAIN.HouseType)
問題は時々私が参加HouseType列がnullになることができるということです。
HouseType列がnullの場合でも、しかし@HouseTypeParameterがNULLである場合にのみ、私はすべての列を返したい
アイブ氏は、クエリ
WHERE MAIN.HouseType = COALESCE(HouseType, MAIN.HouseType) OR MAIN.HouseType IS NULL
の条件に以下を追加してみました
しかしこれは、ユーザがHouseTypeパラメータをどのように設定してもnull値を取得します。
助けがあれば助かります。
テーブルの 'HouseType'列は' NULL'でもかまいませんか? – Lamak
ごめんなさい、ラマックの良い点。質問を更新しない –