![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 4.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
mam taki mały problemik. mam bazę danych ( dość sporą ) , w której znajduje się kilka tabel. Stworzyłem zapytanie odwołujące się do trzech tabel i wszystko działa pięknie ale chciałbym zmodyfikować troche zapytanie i nie tworzyć dwóch odrębnych zapytań tylko jedno. Mianowicie wygląda to mniej więcej tak:
a wyniki obu zapytań wyświetlam razem. chciałbym zastosować uproszczenie i zapytać tak:
I w tym momęcie mogę jechać po zakupy na miasto:) tak długo mieli to zapytanie i nie daje wyników. Może ktoś wie dlaczego?? Chciałbym aby zapytanie działało tak że wybiera mi z bazy np rekordy w których znajdyję się szukana fraza w polu2 i polu4 (pola tekstowe) ale nie dublowało wyników Tzn. stosując pierwszą wersję podwójnych zapytań otrzymuje podwójne wyniki - wyświetla mi te rekordy gdzie fraza znajduje się zarówno w polu2 jaki i w polu4, często wyświetlając dwa takie same rekordy gdyż pierwsze zapytanie pokazuje rekord dla którego fraza jest w polu2 a nstępnie pokazuje rekord gdzie fraza jest w polu4, a ponieważ często jest tak że taka sama fraza może znaleźć się w polu 2 oraz polu4 zatem wyświetla 2 takie same rekordy. Jak temu zaradzić?? Może ma ktoś ciekawy pomysł(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Ten post edytował patigo 17.03.2005, 08:59:49 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze to tak:
INSTR bedzie szybsze niz LIKE jesli chcesz tylko wyszukac dany ciag. Pomiedzy tymi dwoma wersjami nie wiem czy bedzie roznica, ale jak juz sprawdzisz to sie pochwal, ktore rozwiazanie wygralo, chetnie sie dowiem (po cichu obstawiam nr 1). Poza tym koniecznie dodaj indexy na nastepujace pola: tabela1.pole3 tabela2.pole2 tabela2.pole4 tabela3.pole5 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 4.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Skrypt zarówno 1 jaki i 2 działają poprawnie tzn, nie wywala żadnych błędów wykonuje się zapytanie ale zwraca 0 czyli że nie odnaleziono żadnego rekordu dla podanych kryteriów:( może przy takim zapytaniu innaczej się pobiera dane??
Ja kożystam z pętli While . |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Sposob pobierania danych nie zmienia sie. Dla pewnosci mozesz sprawdzic zapytanie np. w phpMyAdmin. Pozatym upewnij sie, ze masz dane, ktore spelniaja wszystkie 3 warunki na raz.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 4.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Hmm.... Już chciałem pisać że nic nie działa ale....
okzało się że w zapytaniu do phpmyadmina
w miejscu jakaśfraza miałem coś takiego '%$zmienna%' dlatego też zwracał pusty wynik pytanie było pomyślne ale bez wyniku natomiast gdy zrobiłem '$zminna' zaczeło działać ale przyniosło odmienny skutek:(mam pewne dane zliczone w bazie i wiem że przy takim kryterium powinno mi zwrucić 44 rekordy a zwraca 2, ) nie wiem co tu jeszcze zrobić?? |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Nie majac tych danych i dokladniejszej struktury tabel (niz pole1, pole2 ...) ciezko wiecej pomoc.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 4.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wieczorkiem postaram się stworzyć uproszczony obraz tej bazy z podstawowymi tabelami i powiązaniami.
|
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Ok.. to znacznie ulatwi sprawe.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 02:10 |