Hirdetés

Új hozzászólás Aktív témák

  • bpx
    őstag

    Készítettem egy Silverlight alkalmazást, ami egy Microsoft SQL Server 2008 R2 Express Edition-ből olvassa ki az adatokat. Az adatokat a felhasználó szűrheti is (dátumtól - dátumig, összegtől - összegig). Ez ugye 4 paraméter és nem csak párban működnek, tehát lehet olyat is, hogy csak a bizonyos dátumtól újabb adatokat listázom ki. Ez működik is, csakhogy a favágó módszerrel. Tehát amennyi lehetőség annyi SQL lekérdezés amiből majd csak egy fut le. Nem lehet ezt valahogy elegánsabban megoldani?

    egyrészt, ha bind változókat használsz, ez így is csak annyi SQL, ahány esetet a feltételek megadása/meg nem adása eredményez
    de ha minden esetet egy SQL utasítással akarsz kezelni, ám legyen

    MSSQL-t nem ismerem, szóval ez amolyan pszeudokód lesz :D

    SELECT oszlop1, oszlop2
    FROM tabla
    WHERE datum > NVL(:B1, MINDATE)
    AND datum < NVL(:B2, MAXDATE)
    AND osszeg > NVL(:B3, 0)
    AND osszeg < NVL(:B4, INT.MAXVALUE);

    B1-B4 bind változók, ami user input
    ha a user nem ad meg semmit, akkor NULL-t adsz be neki
    az NVL arra való, hogy ha az első paramétere NULL, akkor kicseréli a másodikra

    tehát ha a user nem ad meg felső határt a dátumra, akkor a NULL-t kicseréli az NVL a lehetséges legnagyobb dátumra
    ha a user nem ad meg alsó határt az összegre, akkor kicseréli 0-ra
    és így tovább...

    ha meg linq vagy ilyesmi, abban nem vagyok otthon (sajnos)

Új hozzászólás Aktív témák