webForumDet fria alternativet

case fel

Databaser & SQL

2 svar · 224 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Frågan#1

Får inte denna kod att fungera. Om @subcID är 0 då skall den ta ut där prod_cate_id är lika med @categoryID annars där prod_subc_id är lika med @categoryID.
Felmeddelande: "Incorrect syntax near '='"(röd färg)

SELECT DISTINCT left(prod_title,1) as letters 
FROM products 
WHERE 
   CASE @subcID
      [red]WHEN 0 THEN prod_cate_id = @categoryID[/red]
      ELSE prod_subc_id = @categoryID
ORDER BY letters
Medlem sedan dec. 200012 464 inlägg
#2

Tsql hanterar inte booleska uttryck

SELECT DISTINCT left(prod_title,1) as letters 
FROM products 
WHERE  @categoryID = 
   CASE @subcID
      WHEN 0 THEN prod_cate_id 
 else  prod_subc_id end 
ORDER BY letters

jag skulle nog skriva

if @subcID = 0 
   SELECT DISTINCT left(prod_title,1) as letters 
      FROM products 
   WHERE  prod_cate_id = @categoryID
   ORDER BY letters
else
   SELECT DISTINCT left(prod_title,1) as letters 
      FROM products 
  WHERE  prod_subc_id = @categoryID
  ORDER BY letters
Medlem sedan sep. 20011 914 inlägg
#3

Ok, får väl köra på den varianten då. Tack. :)

255 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)