![]() |
![]() |
![]()
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 :
i nie mam pojęcia jak to rozwiązać |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 01:54 |