Autor Zpráva
blaaablaaa
Profil
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 *
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
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 *
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: