Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Where-OR-AND, Jak skrócić kod
tomek1973
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 14.03.2009

Ostrzeżenie: (0%)
-----


Mam taki kawałek kodu:


  1. WHERE
  2. `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2008%" AND `sektor` = "A"
  3. OR `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2008%" AND `sektor` = "B"
  4. OR `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2008%" AND `sektor` = "C"



Dzięki niemu obliczam wyniki klasyfikacji z jednego roku.

Teraz chce zrobić to samo, ale z 2 lat, więc wychodzi mi kod:


  1. WHERE
  2. `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2008%" AND `sektor` = "A"
  3. OR `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2008%" AND `sektor` = "B"
  4. OR `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2008%" AND `sektor` = "C"
  5. OR`id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2009%" AND `sektor` = "A"
  6. OR `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2009%" AND `sektor` = "B"
  7. OR `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE "2009%" AND `sektor` = "C"
  8.  



Muszę też policzyć dla 3 lat i 5 lat i robi się niezły bigos.

Czy można skrócić ten kod?
myślałem o czymś takim:

  1. Where
  2. `id_zawodnika` = '.$krow['id'].' AND `cykl` = "Grand Prix Polski" AND `data` LIKE ( "2008%" OR "2009%") AND `sektor` = ("A" OR "B" or "C")


Oczywiście to tylko moja koncepcja. Czy kombinuje we właściwym kierunku?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tomek1973
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 14.03.2009

Ostrzeżenie: (0%)
-----


Doskonale zdaję sobie sprawę, że pole powinno być w postaci DATE, jednak nie wiedziałem o tym kiedy zaczynałem robić stronę.
Teraz mam taki format daty, który w żaden sposób nie idzie przerobić (2009-12-03, Poznań), a w bazie danych mam prawie 15000 rekordów, więc zmiana daty "z ręki" nie wchodzi w grę.

Niemniej jednak IN pomogło na tyle, że napisałem kod, który funkcjonuje:

  1. WHERE `cykl` = "Grand Prix Polski" AND `sektor` IN ("A", "B", "C") AND `data` LIKE "2008%"


Tutaj też kłania się mój błąd, o którym pisze wyżej, gdyż muszę używać "LIKE" przy dacie, zamiast zastosować jakieś prostsze rozwiązanie.
Niemniej jednak, czy idzie w jakiś sposób połączyć IN i LIKE , żeby kod nie musiał wyglądać tak:

  1. WHERE
  2. `cykl` = "Grand Prix Polski" AND `sektor` IN ("A", "B", "C") AND `data` LIKE "2007%"
  3. OR `cykl` = "Grand Prix Polski" AND `sektor` IN ("A", "B", "C") AND `data` LIKE "2008%"
  4. OR `cykl` = "Grand Prix Polski" AND `sektor` IN ("A", "B", "C") AND `data` LIKE "2009%"
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 17:08