Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Modalitați amuzante și ...

O disparitie de ani buni, Acces D...

Mancarea e scumpa

Parere achiziționare BMW G20
 Schimbarea bateriei moderne la VA...

Rostschreck Lidl

Si noi suntem Florin Piersic? / J...

Rascumparare euroobligatiuni (pri...
 Detartraj partial slatina

Cu ce pot izola fonic peretii pen...

Telefon cu senzor compass BUN

Blocare google chrome cu master p...
 Instalare Siemens NX pe macbook

sfat achizitie telefon pana in 20...

Stoc Smart CAM TV

Ce corzi de chitara sa cumpar?
 

Procedura stocata in Navicat 11.x cu MariaDB

- - - - -
  • Please log in to reply
3 replies to this topic

#1
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Baza de date: MariaDB. Printre alte tabele, si una (hotels), care contine longitutindea si latitudinea fiecarei locatii.
Coordonatele GPS curente le stiu (am reusit sa le afisez printr-un alert la ecran; si se afiseaza correct).
Doresc sa afisez cele mai apropiate hoteluri de locatia in care sunt.

Am gasit asta:
CREATE FUNCTION distance (latA double, lonA double, latB double, LonB double)
	RETURNS double DETERMINISTIC
BEGIN
	SET @RlatA = radians(latA);
	SET @RlonA = radians(lonA);
	SET @RlatB = radians(latB);
	SET @RlonB = radians(LonB);
	SET @deltaLat = @RlatA - @RlatB;
	SET @deltaLon = @RlonA - @RlonB;
	SET @d = SIN(@deltaLat/2) * SIN(@deltaLat/2) +
	COS(@RlatA) * COS(@RlatB) * SIN(@deltaLon/2)*SIN(@deltaLon/2);
	RETURN 2 * ASIN(SQRT(@d)) * 6371.01;
END//


Acum, nu stiu cum sa fac asta (in Navicat)... In Functions, la new function, pot allege intre procedura (ceea am si facut) si function. Numai ca trebuie sa intoduc parametrii de rutinei si nu stiu ce sa pun acolo.

Daca trec de acest ecran, fara sa introduce nimic, si pun codul de mai sus, cand salvez (de exemplu cu numele de location), imi da eroare: 1303 - can't create a FUNCTION from within another stored routine.
Ce este gresit? Cum pot face sa functionezae asta?
Ma gandeam ca ulterior sa o pot apela aceasta procedura stocata in php.

Orice sfat e binevenit.
Multumesc

#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,254
  • Înscris: 24.02.2007
Pune un screenshot sa vedem unde ai scris interogarea.

Apoi, calcule de genul se fac folosind suportul oferit de baze de date pentru asta. Exemple pentru MariaDB: https://mariadb.com/...-functionality/, https://mariadb.com/...db/st_distance/

Daca nu e suficient, treci la o baza de date mai serioasa (Mysql si derivate au probleme cu carul).

Edited by dani.user, 22 January 2017 - 16:58.


#3
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Ales nu-s coordinate carteziene? Oare functioneaza si pt coordinate gps?

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,254
  • Înscris: 24.02.2007
st_distance se pare ca nu stie de coordinate sferice.

ST_Distance_Sphere in schimb pare a fi ce cauti.

Edited by dani.user, 22 January 2017 - 22:14.


Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate