1

Konu: double veri tipinde group by sorunu

uzunca bir aradan sonra yeniden merhaba dostlar
VERILER isimli tablomda maxdeger isimli fieldim var

SELECT VERILER.maxdeger FROM VERILER GROUP BY VERILER.maxdeger ORDER BY VERILER.maxdeger DESC INTO CURSOR GECICITABLO

SQL cümlesi ile tabloda kaç değişik maksimum değer in olduğunu buluyorum ancak;

MAXDEGER FİLEDİNİN TÜRÜ DOUBLE(8,2) OLARAK TANIMLANDIĞINDA örneğin, 469.33 şeklindeki veriyi gruplamasına rağmen birden fazla kayıt olarak getiriyor(tabloda kaç kayıt varsa o kadar yazılıyor)


MAXDEGER FİLEDİNİN TÜRÜ numeric(8,2) OLARAK TANIMLANDIĞINDA örneğin, 469.33 şeklindeki veriyi gruplamayı düzgün yapıyor ve tek kayıt kayıt olarak getiriyor istediğim işi yapmış oluyor.

Soruma gelince, Veri türü değişinde GROUP BY neden düzgün çalışmıyor? kafayı yedim ancak sorunu çözdüm,sadece merakımdan sordum :-(

En büyük sermaye nakit,nakit sermaye vakittir...

2

Re: double veri tipinde group by sorunu

double veri türü kayan noktadır. 8,2 dediğinde sadece ekranda nasıl gösterileceğini seçmiş olursun. o virgülden sonra set decimal ile belirttiğin şekilde saklar veriyi. bu yüzden de sana aynı veriyi getiriyormuş gibi geliyor. ama aslında getirmiyor. onlar birbirinden farklı. maxdeger field'ını kaydederken round(maxdeger,2) ile yuvarlayabilirsin veya set decimal to 2 yazar sonra kaydedersin.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

3

Re: double veri tipinde group by sorunu

hmmm,bak bunu bilmiyordum metin üsdadım,bilgilendirdiğin için teşekkür ederim..

En büyük sermaye nakit,nakit sermaye vakittir...

4

Re: double veri tipinde group by sorunu

Mumkunse double yerine currency kullan. Double cifte bela gibi birsey:)

5

Re: double veri tipinde group by sorunu

cetinbasoz yazdı:

Mumkunse double yerine currency kullan. Double cifte bela gibi birsey:)


peki sql server için ne diyorsun? money mi? numeric mi?

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

6

Re: double veri tipinde group by sorunu

neyzen yazdı:

hmmm,bak bunu bilmiyordum metin üsdadım,bilgilendirdiğin için teşekkür ederim..


smile

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

7

Re: double veri tipinde group by sorunu

peki üsdatlar bu double veri tipi ne işe yarar o zaman ayıptır sorması?lüzumsuz bişi anladığım kadarı ile ?

En büyük sermaye nakit,nakit sermaye vakittir...

8

Re: double veri tipinde group by sorunu

Luzumsuz degil:) Cok kucuk ve buyuk sayilarda gerekli. Sorun kesirli sayilarin ikilik sistemde dogru olarak tanimlanamasinda. Problem VFP'nin problemi degil. C'de de var ayni sorun.

SQL serverda da eger yetiyorsa money tipini tercih ediyorum. Olmazsa decimal. Sonra double (numeric ile aram hic iyi degil).

9

Re: double veri tipinde group by sorunu

çetin hocam,o zaman soruyu şöyle çevireyim,Ben sayısal alanlarda genellikle numeric kullanırım.Siz numericle aram iyi değil şeklinde yazmışsınız.Her durumda numeric kullanmak yanlış mıdır ? numeric veri tipi çoğu ihtiyacınızı karşılıyor..

En büyük sermaye nakit,nakit sermaye vakittir...

10

Re: double veri tipinde group by sorunu

Numeric veri tipi VFP'de hala foxpro doneminde saklandigi gibi saklaniyor (disk uzerinde karakter olarak). Yani deger 123.45 ise dikste de 123.45 olarak saklaniyor (boyu daha buyukse bosluk karakterleri ile dolduruluyor). Notepadde ac bak, sayi aynen orada.

O sekilde saklaninca runtime'da sayi tipine cevrilmesi lazim, ceviren rutinler cok saglam degil herhalde (yillar once buyuk sayilarda hatasini bildirmistim onu duzelttiler sanirim ama emin degilim - 17 milyar seviyesinde sayilarda hassasiyeti kaybediyordu, 17,123,456,789 gibi bir sayi 17,123,450,000 gibi tam hatirlamiyorum).
Diger bir problem, n(8,2) diskte 8 karakterlik yer kapliyor, n(9,2) ise 9. Oysa integer, double, currency gibi tiplerde boy sabit (4, 8, 8) ve sayinin memorydeki hali dogrudan diskte saklaniyor.

11

Re: double veri tipinde group by sorunu

hmmmm,çetin hocam valla yazdıklarınızı okyunca şaşırdım açıkçası.açıklamalar için teşekkür ederim.

En büyük sermaye nakit,nakit sermaye vakittir...