Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wybieranie pola z tolerancja
Forum PHP.pl > Forum > Bazy danych
Kinool
stoje przed pewnym zdaniem smile.gif mam tabele z charajterystyka pewych urzadzen, jednym z pol jest wydanosc, prosta wyszukiwarka ma wyszukiwac po wydajnosc (podanej przez uzytkownika) tu zadnych problemow smile.gif ale musze zrobic zaawansowana wyszukiwarke w ktorej bedzie sie wybieralo specychiczne warunki pracy (temperature, wilgotnosc itp.) z innych tabel pobieram wspolczynniki korekcji dla tabeli glownej np. dla temp. -10C i wilgotnosci 89% wspolczynnik wynosi 0,78, w podobny sposob wymieram inne wspolczynniki i wychodzi mi powiedzmy wzor:
szukana_wydajnosc = wydajosc*wspolczynnik1*wspolczynnik2

no i z tym tez by nie bylo problemu smile.gif ale wyszukiwac ma z toleranca +-15% czyli z tabeli urzadzenia ma znalezc wszystkie rekordy dla ktorych wydajnosc = szukana_wydajnosc+-15% i tu pojawia sie problem sad.gif

nie chce robic tak ze najpierw pobieram wszystkie wydajnosci i trzymam je w jakiejs tablicy w php potem przeprowadzac na nich operacje i przeszukiwac na ich podstawie bazy bo malo do elegancie i wydajne, wiec kombinuje z pobraniem tego z jednego zapytania (tzn wspolczynniki korekcyjne pobieram odzielnie i podstawiam do glownego zapytania)


wszystko mi dziala do momentu gdy musze pobrac te +-10% sad.gif

zapytanie wyglada mnijwiecej tak:
  1. SELECT *
  2. FROM urzadzenia WHERE sc2 BETWEEN ((sc2*1241*950)-300) AND ((sc2*1241*950)+300) ORDER BY typ, model


sc2 - to wydajnosc (liczba calkowita)
1241 i 950 - to wspolczyniki korekcyjne

+-300 to na stala przypozadkowana tloerancja (wlasnie z tym jest problem bo chialbym uzyc 10% sc2

probowalem czegos takiego ((sc2*1241*950)-((sc2/100)*15)) ale to nie dziala sad.gif
AxZx
takie cos nie dziala?
((sc2*1241*950)-(sc2*0,15)) AND ((sc2*1241*950)+(sc2*0,15))
Kinool
niestety ale to nie dziala
popo
  1. SELECT *
  2. FROM urzadzenia WHERE sc2 > ((sc2*1241*950)-300) AND sc2 < ((sc2*1241*950)+300)
  3. ORDER BY typ, model
Kinool
@popo twoja metoda niczym nie rozni sie od BETWEEN, juz nie wazne w jaki sposob bede ograniczal zakres dolny i gory ale chodzi o uzyskanie tolerancji w zapytaniu (dynamicznie w zaleznosci od wartosci sc2)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.