Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica
 Ce componenta e asta si ce ziceti...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila
 Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K
 Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...
 

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,239
  • Î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,239
  • Î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

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

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