Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z wyszukiwaniem w bazie, skomplikowane zapytanie
pyrek
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 23.09.2003

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


witam mam mały problem a mianowicie:

mam bazw i w niej takie tabele jak :
wojewodztwa
powiaty
gminy
miasta

i teraz robie wyszukiwarke która po wpisaniu słowa przeszuka mi te tabele i połączy wyniki. zrobiłem to tak ale wyświetla mi bzdury bo łączy miasta z województwami do których misto nie jest przydzielone :


  1. <?php
  2.  
  3. $wynik = mysql_query ("SELECT * FROM wojewodztwa, powiaty, gminy, miasta WHERE nazwa_woj like '%$key%' or marszalek like '%$key%' or nazwa_pow like '%$key%' or starosta like '%$key%' or nazwa_gmi like '%$key%'or starosta_gmi like '%$key%'or nazwa_mia like '%$key%' or starosta_mia like '%$key%' or adres_mia like '%$key%' or adres_pow like '%$key%' or adres_woj like '%$key%' or adres_gmi like '%$key%' GROUP BY id_woj, id_pow, id_gmi, id_mia ORDER BY nazwa_woj, nazwa_pow, nazwa_gmi, nazwa_m
    ia  LIMIT $start,$limit_st ;"
    )
  4.  
  5. ?>


i nie mam pojęcia jak to rozwiązać
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Aztech
post
Post #2





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Wyświetla bzury z bardzo prostego powodu, ponieważ nie łączysz odpowiednich danych za pomocą JOIN LEFT.
Zrobilbym to w ten sposób (nieoptymalny ale najprawdopodobniej bedzie działał).

Zakładam, że w tabeli miasta masz dowiazania za pomocą indeksów do tabeli województw powiatów i do marszałków.

Na początek rozbij swoje zapytanie na mniejsze części.
Sprawdz czy nazwa w $key istnieje w kazdej z tabel. Jeśli w kótejś znajdziesz, to jesteś w domu. Załóżmy że szukasz miasta, w jakiejś gminie $key (baza tego nie wie). Dowie się w momencie kiedy okaże się, że wynik zapytania do bazy gmin jest niezerowy. Wtedy łączysz za pomocą LEFT JOIN tabelę miast z tabelą gmin gdzie miasto.gmina_id = gmina.id i wtedy masz zwrócone wszyskie miasta w gminie.

Analogicznie robisz całą resztę.
Jeśli o to ci chodziło
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: 16.10.2025 - 01:54