SQL - Opcjonalne pola w warunku where? Filtrowanie danych

SQL - Opcjonalne pola w warunku where? Filtrowanie danych
  • Rejestracja: dni
  • Ostatnio: dni
0

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!

KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

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:

Kopiuj
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.

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
0

z tym, że taka konstrukcja w oracle ma tendencje do nie używania indeksów :/

  • Rejestracja: dni
  • Ostatnio: dni
0
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!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.