![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 20.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzień dobry
Szukałem podobnego problemu w 'przedszkolu' - niestety nie znalazłem rozwiązania, stąd mój post. chciałbym wyciągnąć z tabeli kilka wierszy posortowanych w zależności od spełnionych warunków. Moje zapytanie wygląda następująco:
Niestety zapytanie jest strasznie nieoptymalne a nie chcę go rozbijać na 3 kolejne. Czy jest na to optymalne rozwiązanie? Serdecznie dziękuję. |
|
|
![]()
Post
#2
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Lepiej wklej strukturę bazy i napisz, co chcesz osiągnąć.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 1 Dołączył: 16.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Po co za każdym OR dajesz poprzedni warunek? Załóżmy, że masz dwa warunki w OR: warunek_1 i warunek_2. Jeśli dasz WHERE warunek_1 OR warunek_2 to wykona się zawsze wtedy, kiedy choć 1 z nich jest prawdziwy. W twoim przykładzie załóżmy że wartość to 5, wartosc2 to 10 a wartosc3 to 15. Jeśli wartosc = 5 to zaliczy pierwszy warunek (reszta nie ma znaczenia) Jeśli wartosc2 = 10 to zaliczy drugi warunek (Reszta nie ma znaczenia, jesli wartosc = 5, to zaliczy jeszcze jako pierwszy) Jeśli wartosc3 = 15 to zaliczy jako trzeci warunek, a reszta nie ma znaczenia (bo jesli wartosc2 jest równa 10, to zaliczy jako drugi i w sumie dalej nie musi nawet sprawdzać). Tak więc jak robisz if(warunek_1 OR warunek_2) to nie musisz dawać warunek_1 OR (!warunek_1 AND warunek2) (IMG:style_emoticons/default/smile.gif) Oprócz tego, żeby skrócić kod możesz stosować kolejność przy ORDER BY, zamiast wskazywać nazwę kolumny, podaj jej numer (gdzie 1 to pierwsza od lewej, a n to ostatnia).
Ten post edytował Ripper 19.09.2012, 23:20:39 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 00:38 |