Witam,
Czy istnieje możliwość żeby w pole warunku where mogło przyjąć dowolną wartość? Napisze brzydko... 'select costam where cos = "*" ' Docelowo, chce stworzyc zapytanie które będzie obsługiwać filtrowanie danych w jednej tabelce. Przykladowo mam 4 pola według, ktorych będzie można filtrować, wypełniam tylko 2, reszta może być dowolna, da się to jakoś obsłużyć w SQLu?
Z góry dziękuję za rady :)
Pozdrawiam!
Przy założeniu że pola nie będą zawierać NULL i nie będziesz wyszukiwać NULL-i,
to można to zrobić tak, że parametry (par1, 2, 3, 4) do "pominięcia" ustawiamy na NULL i robimy zapytanie:
SELECT *
FROM xx
WHERE (col1=par1 OR par1 IS NULL)
AND (col2=par2 OR par2 IS NULL)
AND (col3=par3 OR par3 IS NULL)
AND (col4=par4 OR par4 IS NULL)
Inna sprawa z wydajnością takiego zapytania.
Przy małej tabeli to w sumie bez znaczenia, ale przy milionach rekordów być może lepszym rozwiązaniem
byłoby dynamiczne konstuowanie oddzielnych zapytań zależnie od podanych parametrów.
z tym, że taka konstrukcja w oracle ma tendencje do nie używania indeksów :/
kordirko napisał(a)
Przy założeniu że pola nie będą zawierać NULL i nie będziesz wyszukiwać NULL-i,
to można to zrobić tak, że parametry (par1, 2, 3, 4) do "pominięcia" ustawiamy na NULL i robimy zapytanie:
Kolego, dzieki wielkie o takie cos mi wlasnie chodzilo :)
Pozdrawiam serdecznie!