![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 433 Pomógł: 64 Dołączył: 29.01.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam dosc nietypowy problem i nie wiem jak sobie z nim poradzic. Dodam, ze uzycie bazy z zalozenia bedzie duze i boje sie, ze zrobie to nieoptymalnie... Ale do rzeczy: Mam tabelę z listą obiektów, która wygląda tak: [ id | name ] oraz tabelę właściwości, która prezentuje się tak: [ id | object_id | attribute | value ] Atrybutów dla jednego object_id jest bardzo dużo, między innymi znajduje się tam latitude i longitude, czyli przykładowe wiersze: [ 45 | 11 | lat | 55.423423 ] [ 46 | 11 | lng | 21.102234 ] Baza w taki sposób była budowana dość długo, a teraz ma dojść, że tak powiem feature lokalizacji obiektów za pomocą funkcji haversina, która wykonuje się mniej więcej tak: haversine_distance(lat_0, lng_0, lat, lng) < 40 Zwraca ona true lub false w zależności od tego, czy dany punkt lat,lng znajduje się w promienu 40 kilometrów od lat_0,lng_0 Zdaję sobie sprawę, że jest to nieoptymalne i najłatwiejszą rzeczą byłoby posiadanie tabeli obiektów w postaci [ id | name | lat | lng ] ( co w ostateczności uczynię ) ale jest jak jest, do tego są już wszystkie mechanizmy i bardziej mi się na chwilę obecną czasowo opłaca zrobić nieludzkie zapytanie niż zmieniać konstrukcję aplikacji. Tylko... Nie wiem jak owe zapytanie zbudować :/ Do tej pory zapytania wyglądały mniej więcej jakoś tak:
Czy jest jakaś możliwość połączenia tego zapytania z funkcją haversina która de facto musi sprawdzić obie wartości value występujące powyżej? Jeżeli się nie jasno wyraziłem, to mówić- doprecyzuję, sam nie jestem w stanie sprawdzić, bo już mnie głowa boli od myślenia :s Dzięki za pomoc. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.07.2025 - 00:07 |