Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Poprawienie zapytania
Forum PHP.pl > Forum > Bazy danych > MySQL
darlowiak
Witam Oto kod
  1. SELECT * FROM `mydb`.`gw_przych` AS `gw_przych` WHERE ( `Od` LIKE :Nadawca OR `Do` LIKE :Adresat OR `Nr_ref` LIKE :Nr_ref OR `Segregator` LIKE :Segragator OR `Dotyczy` LIKE :Dek OR `Rodzaj_pisma` LIKE :Rodzaj_pisma OR `Znak_pisma` LIKE :Znak_pisma OR `Data` = :Data_dokładna OR `Data` BETWEEN :Po_dacie AND :Przed_datą OR `Dotyczy` LIKE :Dotyczy ) ORDER BY `Lp` ASC, `Data` ASC


I mój problem (w innym temacie mam problem z PL znakami) tym razem polega na tym że po uzupełnieniu np. Rodzaju_pisma i zakresu dat albo Rodzaju pisma i Nadawcy to wyświetla wszystkie dane, tak jakbym nic nie podał.
Gdy wypełnie tylko [Rodzaj_pisma] albo każdy inny pojedynczo parametr to działa, jak kilka to już nie.


podobno to jest wina użycia OR
proszę o pomoc sad.gif
mmmmmmm
A jak to ma działać? czy aby na pewno jak OR?
darlowiak
to ma działać tak że
screen
Kto wpisuje wybrane przez siebie parametry właśnie np. Rodzaj_pisa i Nadawce , bez uzupełniania pozostałych i ma mu przeszukać baze na podstawie tego.

A na razie działa to tak że jak sie wpisze jeden parametr to dział i szuka, samą date też szuka, zakres dat też szuka. Jedynie gdy sie poda 2 lub więce parametrów głupieje i wywala całą tabele.



Z drugiej strony spróbowałem inaczej i osobno zrobiłem wyszukiwarke wg.dat i osobno wg. danych gdzie zamiast OR mam AND i podczas wyszukiwania wpisuje tam gdzie nie znam parametru % a gdzie znam to wpisuje go i wtedy też normalnie filtruje te dane. Ale wolał bym mieć wszystko w jennym, a nie 2 osobne.
mmmmmmm
Ale wg podanych warunków ma powiększać zbiór wynikowy (OR), czy też pomniejszać (AND).
id miasto imie
1 warszawa ala
2 olsztyn iza
3 warszawa ela
4 elblag ela

przy wpisaniu imie='ela', to wiadomo - pojawia sie rekordy 3 i 4
przy wpisaniu miasto='warszawa', rekordy 1 i 3
Co ma sie pokazac przy wpisaniu miasto='warszawa' oraz imie='ela'. rekordy 1,3,4, czy tylko 3?
darlowiak
Cytat(mmmmmmm @ 10.06.2013, 15:45:35 ) *
Ale wg podanych warunków ma powiększać zbiór wynikowy (OR), czy też pomniejszać (AND).
id miasto imie
1 warszawa ala
2 olsztyn iza
3 warszawa ela
4 elblag ela

przy wpisaniu imie='ela', to wiadomo - pojawia sie rekordy 3 i 4
przy wpisaniu miasto='warszawa', rekordy 1 i 3
Co ma sie pokazac przy wpisaniu miasto='warszawa' oraz imie='ela'. rekordy 1,3,4, czy tylko 3?


hmmm co do przykładu to żeby ograniczało sie do dokładnych wartości czyli w tym przypadku 3

a u mnie wpisze Rodzaj_pisma=email to pokaze dobrze same mejle
ale już jak wpisze email i do tego Nadawce to wywala wszystko całą baze
a chce zeby pokazał mejle tylko od tego nadawcy



A co do tego okienka i opcji uzycia AND

Jeśli z kodu wywaliłem funkcje wg. daty i dałem zamiast OR > AND.
To po wpisaniu RodzajPisma= email i Nadawca=jakasfirma to wywala dalej całą baze, ale po wpisaniu rodzaju pisma i nadawcy a reszty parametrów uzupełniłem samym '%' . To pokazuje dobrze przeszukaną baze same mejle od tego nadawcy

I tu jest problem, bo o ile uzycie AND i w nieznane parametry wpisanie '%' to nie problem.
To dla kogoś kto chce przeszukać bazę jest ważna data!

Czyli np wyszukać RodzajPisma, nadawce z danego okresu, a gdy parametry do daty mam w kodzie to sie sypie nawet z AND i wywala całą baze

Ktoś ma na to jakiś pomysł ?
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.