Hej, i databasen jag har kan man ha två värden (olika grupper som ska visas), de är antingen 1 eller 2. Dessa värden skickar man med till sp:n för att få ut en grupp, nu försöker jag fixa så att om man skickar med 3 ska man få med båda grupperna.
Nu har jag följande kod
@visibility int,
@language int,
@group varchar(100)
AS
IF @group = 3
BEGIN
SET @group = '1 OR Model.FKgroupID = 2'
END
SELECT Model.PKmodelID, Model.ModelName, ModelDescription.FullModelName, ModelDescription.Description
FROM Model INNER JOIN
ModelDescription ON Model.PKmodelID = ModelDescription.PKmodelID INNER JOIN
ModelVisibilityLink ON Model.PKmodelID = ModelVisibilityLink.PKmodelID INNER JOIN
ProductGroup ON Model.FKproductGroupID = ProductGroup.PKproductGroupID
WHERE ModelDescription.PKlanguageID = @language AND ModelVisibilityLink.PKvisibilityID = @visibility AND Model.FKgroupID = @group
Om jag skickar med 3 får jag följande felmeddelande
Syntax error converting the varchar value '1 OR Model.FKgroupID = 2' to a column of data type int.
(det funkar med att skicka med 1 eller 2 dock, vilket det ska), så min fråga är hur fan jag konverterar det rätt så att säga.
@visibility int,
@language int,
@group varchar(100)
AS
IF @group = 3
BEGIN
SET @group = '1, 2'
END
SELECT Model.PKmodelID, Model.ModelName, ModelDescription.FullModelName, ModelDescription.Description
FROM Model INNER JOIN
ModelDescription ON Model.PKmodelID = ModelDescription.PKmodelID INNER JOIN
ModelVisibilityLink ON Model.PKmodelID = ModelVisibilityLink.PKmodelID INNER JOIN
ProductGroup ON Model.FKproductGroupID = ProductGroup.PKproductGroupID
WHERE ModelDescription.PKlanguageID = @language AND ModelVisibilityLink.PKvisibilityID = @visibility AND Model.FKgroupID IN (@group)
Det kanske inte fungerar dock. Annars får du lägga in alltihop i en sträng som du sedan exekverar med EXEC.
Nej får samma felmeddelande fast på 1, 2 då. Det var just det jag undrade hur man sätter ihop allt till en sträng som jag exekverar, alltså bygga upp strängen med lite till om det skulle vara en 3:a i @group