Autor | Zpráva | ||
---|---|---|---|
blaaablaaa Profil |
#1 · Zasláno: 25. 2. 2010, 11:33:08
Ahoj,
mam strankovani v mssql: SELECT * FROM ( SELECT TOP (@ItemRollOut) p.id, @lang AS lang FROM pub_products p LEFT JOIN pub_properties AS pp ON pp.id_prod=p.id LEFT JOIN pub_productsAlphabet pa ON pa.id_prod=p.id WHERE pp.id_lang=@lang AND pp.property='A__000001' AND p.taxonomy=@taxonomy AND p.tax_code=@tax_code ORDER BY p.id DESC ) AS TMP1 ORDER BY id ASC chci do podminky pridat podminku IIF(@firstChar='', 1, pa.firstChar=@firstChar) coz ale vraci chybu Incorrect syntax near '='. (zkousel jsem to i pres CASe, oept neuspesne) Nevite, jak toto obejit (mam to ve vice dotazech, takze moc nechci dotaz davat do varcharu a spoustet pres EXEC). Diky |
||
Kajman_ Profil * |
#2 · Zasláno: 25. 2. 2010, 12:28:26
To chcete do where? To by pak mohlo být
where (pa.firstChar=@firstChar or @firstChar='') případně where (pa.firstChar=@firstChar or @firstChar is null) Nevím, jestli je pro mssql prázdný řetězec null jako v oracle nebo něco jiného než null jako v mysql. |
||
blaaablaaa Profil |
#3 · Zasláno: 25. 2. 2010, 13:04:35 · Upravil/a: blaaablaaa
Kajman_:
Dekuji, ale trochu upresnim o co mi jde mam seznam vyrobku (pub_products AS p) na ktery se vaze seznam vlastnosti (pub_properties AS pp), pricemz pokud pp.property='A__000001', jedna se o nazev vyrobku. Chci uzivateli dovolit vybrat vyrobky zacinajici na urcite pismeno, proto jsem vytvoril tabulku pub_productsAlphabet AS pa (id_prod, firstChar, lang), do ktereho si ukladam prvni pismeno nazvu vyrobku v danem jazyce, abych mohl pouzit index a usetril databazi. @firstChar je vstupni promenna, ktera je bud prazdna nebo obsahuje pismeno, podle ktereho chci vybirat. Potrebuji tedy: - pokud je v @firstChar nejaky znak, omezit vyber pomoci pa.firstChar=@firstChar - pokud je @firstChar prazdne, neomezovat vubec ( pa.firstChar tedy muze byt cokoliv ) Kdyz jsem toto psal, napadlo me celkem trivialni reseni: WHERE (@firstChar IS NULL OR (@firstChar IS NOT NULL AND pa.firstChar=@firstChar)) Ktere by snad mohlo fungovat. |
||
Kajman_ Profil * |
#4 · Zasláno: 25. 2. 2010, 13:12:01
Takže tu podmínku chcete přidat do joinu?
LEFT JOIN pub_productsAlphabet pa ON pa.id_prod=p.id AND (pa.firstChar=@firstChar or @firstChar is null) |
||
blaaablaaa Profil |
#5 · Zasláno: 25. 2. 2010, 13:28:36
Kajman_:
Ne, klasicky do WHERE, uz jsem to vyresil: WHERE (@firstChar IS NULL OR pa.firstChar=@firstChar) Pouze jsem neumel spravne sestavit podminku a resil jsem tady krkolomna reseni. |
||
Časová prodleva: 13 let
|
0