[Linux-programlama] Re: POSTGRESQL HAVING

---------

[Linux-programlama] Re: POSTGRESQL HAVING

From: Mert Pamukcu <mert_at_istcall.com>
Date: Wed, 04 Jun 2008 12:27:22 +0300
Message-Id: <1212571642.23833.4.camel@istcall-development>

geldigim en son noktayi paylaşayım çoğrafi yakınlıklarla boğuşan
arkadaşlar rahatlar hem benim 2 haftamı aldı :)

CREATE OR REPLACE FUNCTION yakin_ilceler(integer, integer)
  RETURNS SETOF "ILCELER" AS
$BODY$

SELECT *
FROM "ILCELER"
WHERE 3956 * 2 * ASIN(SQRT(POWER(SIN(( (SELECT "LATITUDE" FROM "ILCELER"
WHERE "ID"=$2) - ABS("ILCELER"."LATITUDE")) * pi()/180/2),2)+ COS(
(SELECT "LATITUDE" FROM "ILCELER" WHERE "ID"=$2) *pi()/180)*
COS(ABS("ILCELER"."LATITUDE") * pi()/180)
* POWER(SIN(( (SELECT "LONGITUDE" FROM "ILCELER" WHERE "ID"=$2) -
"ILCELER"."LONGITUDE") * pi()/180/2),2))) <= $1

$BODY$

  LANGUAGE 'sql' VOLATILE;

MP

On Tue, 2008-06-03 at 19:37 +0300, Zekeriye Bozkurt wrote:
>
> > SELECT *,
> > (3956 * 2 * ASIN(SQRT(POWER(SIN((41.087115 -
> ABS("ILCELER"."LATITUDE"))
> > * pi()/180/2),2)+ COS(41.087115*pi()/180)*
> COS(ABS("ILCELER"."LATITUDE")
> > * pi()/180) * POWER(SIN((29.023132 - "ILCELER"."LONGITUDE") *
> > pi()/180/2),2)))) as mesafe
> > FROM "ILCELER"
> > HAVING mesafe > 10
>
> Bir öneri olarak;
>
> Bu kadar uzun hesabı tek select cümleciği içerisinde yapmak yerine bu
> hesabı veritabanında bir alana kayıt ederek yapsanız ve
> select cümleciğinde sadece bu alanı kullansanız diyorum (Bildiğim
> kadarıyla Postgresql de computed field -hesaplanmış alan- kullanma
> imkanı var. Yani bir veya daha fazla alana girilen değerler üzerinden
> otomatik olarak ilgili alanın değeri hesaplanıp kayıt edilebiliyor. )
>

ilginiz icin cok tesekkurler veritabanindaki rastgele cografi
koordinatlara (n km) yakinliktaki kayitlari listelemek icin
kullanacagimdan bu cozum pek ise yaramayabilir diye dusunuyorum.

> Zekeriya BOZKURT

_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Wed 04 Jun 2008 - 11:54:16 EEST

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.