![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam dwie tabele: 1. transporty [ID, Numer, NumerFaktury, Waluta, Masa, Odleglosc] 2. miejsca [ID, Rodzaj(zaladunek/rozladunek), ID_transport, Miejscowosc, Kod, Ulica] Dzięki takiemu czemuś jeden transport może posiadać kilka miejsc załadunku oraz kilka miejsc rozładunku, dodawanie miejsc jest dziecinnie proste - wystarczy dodać do tabeli miejsca odpowiedni rekord. Transporty wyświetlam oczywiście:
Trasę pobieram już wewnątrz pętli:
Sprawa komplikuje się, gdy chcę utworzyć filtr:
który zwróci mi wszystkie transporty które pojechały np. do Bytomia. Co powinienem wstawić w $filtr? Dziękuję za pomoc. Ten post edytował TomASS 26.04.2010, 09:13:54 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Musisz:
1. Dołączyć tabelę miejsca łącząc ją po odpowiedniej kolumnie (zapewne miejsca.id_transport = transporty.id) - JOIN. 2. Podać warunek dla kolumny miejscowosc - np. miejsca.miejscowosc = 'Bytom' |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Zauważ, że jest tutaj realacja jeden do wielu, tzn. jeden transport zawiera więcej niż jeden wpis w tabeli miejsca. Czy da się to zrobić tak aby tylko zmodyfikować odpowiednio klauzulę WHERE?
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Zauważyłem, ale co to zmienia? Jeśli chcesz wyświetlić listę transportów bez powtórzeń to użyj DISTINCT.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Powinno śmigać:
Twoje idzie w tym samym kierunku, ale odwrotnie łączysz tabele. Nie wiem czy ma to jakieś znaczenie np. pod kątem optymalizacji - dobrze by było gdybyś ktoś się na ten temat wypowiedział. //Edit: Chyba jednak lepiej zacząć od tabeli miejsca. Z tego co pamiętam to powinno się zaczynać od tej tabeli, która na wstępie odrzuci najwięcej niepasujących rekordów. Ten post edytował phpion 26.04.2010, 10:48:46 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie zacząłem od tabeli miejsc. Zwiększyło to wykonywanie zapytania o 40% a dodatkowo zaczęło używać indeksów. Dzięki za pomoc (jakoś wpadłem na łączenie tabel, ale użycie DISTNICT jakoś mi optymalizacyjne mało pasuje :/ ). Niemniej działa i działa dosyć szybko.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 22:14 |