![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cześć! Męczę się i męczę i chyba nie dojdę do tego jak powinno to być...
Znalazłem/wymyśliłem kilka innych rozwiązań ale traktuję je póki co jako drogę na około, a nie prawdiłową drogę działania dlatego chciałbym zapytać jeszcze tutaj - moze uda się to zrobić jak należy, a nie na około. Chcę liczyć odległość od punktu. Na to mamy odpowiedni wzór. Zapytanie do bazy też nie powinno przysparzać problemów ale tutaj sprawa się komplikuje. Otóż postawione na Wordpressie. I moje pytanie odnosi się tylko do zapytania. Tabela wygląda tak: id post_id meta_key meta_value 640 11 lat 50.0952545 641 11 lng 20.078393600000027 642 11 address Kwiatowa 12 (tabela wp_postmeta) Czyli ogólnie to co potrzebuję to: - wyciągnąć z bazy wartości lat i lng - policzyć dystans - tam gdzie dystans jest mniejszy niż podany do zapytania zwrócić np. pole address Na moment obecny mam takie coś:
I nie wiem jak to doprowadzić do działania. Ogólnie wydaje mi się, że błąd popełniłem przy wybieraniu wlasnie z bazy tych lat i lng natomiast nie do końca wiem jak to zrobić. Czy mógłby mi ktoś powiedzieć jak powinno wyglądać prawidłowe zapytanie? Edit: Tak, siedzenie po nocach nie pomaga... Tutaj powinien być jakiś INNER JOIN zamiast sprintf'a prawda? (IMG:style_emoticons/default/biggrin.gif) Ten post edytował Kulfon 18.02.2014, 14:01:26 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 731 Pomógł: 141 Dołączył: 9.05.2011 Skąd: śląskie Ostrzeżenie: (0%) ![]() ![]() |
Możesz wystawić zrzut kawałka tej tabeli dla 5-10 postów.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mam 1 testowy post. Było ich więcej ale na moment obecny działam na jednym. Wygląda to tak:
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 731 Pomógł: 141 Dołączył: 9.05.2011 Skąd: śląskie Ostrzeżenie: (0%) ![]() ![]() |
W jednym wierszu post_id, lat, lng i odległość (musisz podstawić do wzoru):
Z resztą powinieneś sobie poradzić (IMG:style_emoticons/default/wink.gif) Ten post edytował mar1aczi 18.02.2014, 14:34:22 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Aaa czekaj w sensie jak podstawić: "W jednym wierszu post_id, lat, lng i odległość (musisz podstawić do wzoru):".
O tyle o ile wydaje mi się, że rozumiem zapytanie to nie wiem o co Ci chodziło (IMG:style_emoticons/default/biggrin.gif) Ten post edytował Kulfon 18.02.2014, 14:39:53 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 731 Pomógł: 141 Dołączył: 9.05.2011 Skąd: śląskie Ostrzeżenie: (0%) ![]() ![]() |
Tam gdzie ja wstawiłem 'obliczenia' musisz zastosować wzór na odległość między punktami. Współrzędne punktu od użytkownika pobierasz przed wykonaniem zapytania i "wkładasz" do wzoru w zapytaniu z odpowiednim where/having.
Ten post edytował mar1aczi 18.02.2014, 14:43:11 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
I wyszło coś takiego:
Natomiast wynik zapytania to pusta tablica - nic mi nie zwraca :/ Dobra... to szukam błędu You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'HAVING distance < '100' FROM (SELECT post_id, meta_key, meta_value FROM wp_postm' at line 5 Ten post edytował Kulfon 18.02.2014, 14:55:23 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 731 Pomógł: 141 Dołączył: 9.05.2011 Skąd: śląskie Ostrzeżenie: (0%) ![]() ![]() |
Podstaw wartości "od użytkownika" ręcznie do zapytania i sprawdź czy zapytanie wykona Ci się poprawnie "z palca" np. w phpmyadmin.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
To niestety też jest błąd - dokładnie taki sam
Przykładowo zapytanie wygląda tak:
Ok, delikatnie zmieniłem zapytanie:
i teraz jeszcze: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY r.post_id' at line 7 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 731 Pomógł: 141 Dołączył: 9.05.2011 Skąd: śląskie Ostrzeżenie: (0%) ![]() ![]() |
Tak:
Poczytaj o składni zapytań sql, przyda Ci się taka lektura (IMG:style_emoticons/default/wink.gif) Ten post edytował mar1aczi 18.02.2014, 15:29:27 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak, racja trochę zaniedbałem bazy danych (IMG:style_emoticons/default/wstydnis.gif)
Hmm tego kodu nie można zmienić na taki? Czemu powtarzać wzór skoro mamy 'AS distance'. To poniżej również działa (IMG:style_emoticons/default/smile.gif)
Jeszcze jedno małe pytanko. (IMG:style_emoticons/default/smile.gif) O tyle o ile dane z innej tabeli wyciągnę sobie dodając na koniec tego zapytania: i po pierwszym SELECT nazwa_kolumny to zupełnie nie wiem jak dzięki temu zapytaniu z postu powyżej wyciągnąć wartość dla innego meta_key np wartość dla address - czyli żeby oprócz lat i lng jak do tej pory wypluwało również address... |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 731 Pomógł: 141 Dołączył: 9.05.2011 Skąd: śląskie Ostrzeżenie: (0%) ![]() ![]() |
Np.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
No tak, próbowałem w ten sposób:
Wielkie dzięki (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 01:34 |