Hej, Jag ser det mer lämpligt att ha två separata SP's och göra kontrollen utanför SP. OK, jag gör separata SP, tack ändå! Ta med produkter där produktnamnet matchar eller är null: Tack!JOIN eller inte JOIN beroende på inparameter i sp
försöker göra en sp med en sql sats som ser olika ut beroende på en inparameter. Ifall inparametern är skild från null ska man joina med en extra tabell. Har försökt med CASE, men får inte till det... någon som har ett tips?
declare @Itemid varchar(10)
set @Itemid=null
SELECT b.batchid, p.productname
FROM product p
JOIN batch b ON p.productid = b.productid
(CASE when @itemid is not null then
JOIN batchitem bi ON b.batchid = bi.batchid and b.ownerid = bi.ownerid
end
)
Mvh Siri
Sv: JOIN eller inte JOIN beroende på inparameter i sp
JAg tror inte man kan göra en casesats i from satsen. Utan du får göra en övergripande case/if-sats:
declare @Itemid varchar(10)
set @Itemid=null
CASE
WHEN @itemid IS NOT NULL THEN
SELECT b.batchid, p.productname
FROM product p
JOIN batch b ON p.productid = b.productid
JOIN batchitem bi ON b.batchid = bi.batchid and b.ownerid = bi.ownerid
ELSE
SELECT b.batchid, p.productname
FROM product p
JOIN batch b ON p.productid = b.productid
END
Sv:JOIN eller inte JOIN beroende på inparameter i sp
Använder CASE även i WHERE-satsen för att lägga till ett sökvillkor ifall en inparameter är null-skild:
AND
(CASE
WHEN ISNULL(p.productname, '') = '' THEN
UPPER(ISNULL(@Productname, ''))
ELSE
p.productname
END
LIKE '%' + UPPER(ISNULL(@Productname, '')) + '%' )
men funderar på om det då blir en onödig LIKE-sökning i det fall @Productname är null?
Mvh Siri
Sv: JOIN eller inte JOIN beroende på inparameter i sp
AND ((p.productname IS NULL) OR (p.productname LIKE '%' + @Productname + '%'))
Eller tar med samtliga poster om parameter saknas:
AND ((@Productname IS NULL) OR (p.productname LIKE '%' + @Productname + '%'))
Sv:JOIN eller inte JOIN beroende på inparameter i sp
Det senare alternativet (ta med samtliga poster..) är precis vad jag sökt! Toppen!
Mvh Siri