1

Konu: bir field deki ayni verileri bulmak

Herkeze iyi gunler,

           Elimdeki tabloda karakter tipinde bir field var. Amacim, bu field icindeki ayni degerli verileri bulmak ve herhangi bir sembol ve ya harf ekleyerek ayni degerli verileri farklilastirmak. Bunu nasil yapabilirim.

2

Re: bir field deki ayni verileri bulmak

SELECT CNT(*),isim FROM test GROUP BY isim

sonra da 1 olanlar hariç diğerlerini tara ve update et. bunu tek bir select komutuyla da yapabilecek olan vardır belki ama benden bu kadar ancak...

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

3

Re: bir field deki ayni verileri bulmak

tesekkur ederim

4

Re: bir field deki ayni verileri bulmak

Eminim daha duzgun bir yolu vardir ama bunu yapabildim.
Tekrarlayan veri basina kacinci tekrarlayan veri olduguna bagli olarak, sonuna bu _1, _2, _3 ... numaralari ekliyor.

Visual Fox Pro
Create Cursor test1 ( names c (20))

Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("ayse")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("mehmet")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("timur")
Insert Into test1 (names) Values ("timur")
Insert Into test1 (names) Values ("cemal")
browse
Select Cnt(*) As county, names ;
    From test1 ;
    Group By names ;
    INTO Cursor CountAll
Select * From CountAll ;
    Where county > 1 ;
    Into Cursor RepeatOnes
Scan
    licounty = RepeatOnes.county
    lcnames = RepeatOnes.names
    Select test1
    Go Top
    ix = 0
    Scan
        lcasd = test1.names
        If Alltrim(m.lcasd) = Alltrim(m.lcnames)
            m.ix = m.ix + 1
            Replace names With (Alltrim(m.lcnames)+"_"+Transform(m.ix))
        Endif
    Endscan
Endscan
SELECT test1
browse

5 Son düzenleyen, ugurlu2001 (11.09.2008 12:05:58)

Re: bir field deki ayni verileri bulmak

erdal yazdı:

Herkeze iyi gunler,

           herhangi bir sembol ve ya harf ekleyerek ayni degerli verileri farklilastirmak.


Eğer amaç sadece aynı değerleri farklılaştırmak ise basit bir replace iş görebilir. Tabi senin yazdığın koddaki gibi bir 1 den başlayarak artan sıralı düzen aramamak kaydıyla.

Visual Fox Pro
Replace Names With Alltrim(Names) + '_' + Alltrim(Str(Recno())) ALL

 
BROWSE
 
RETURN
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

6

Re: bir field deki ayni verileri bulmak

Bu sekilde sirali yapmak ve ya sadece tekrarlayanlari farklilastirmak da daha kolay gibi.

7

Re: bir field deki ayni verileri bulmak

Bole cok daha rahat oldu smile
Sadece tekrarlilari farklilastirmak icin:

Visual Fox Pro
Create Cursor test1 ( Names_ID N(4), names c (20))

 
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("ayse")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("durmus")
Insert Into test1 (names) Values ("alper")
Insert Into test1 (names) Values ("gungor")
Insert Into test1 (names) Values ("mustafa")
Insert Into test1 (names) Values ("ugur")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("timur")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("timur")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("cemal")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("erdal")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("Hakan")
Insert Into test1 (names) Values ("Hakan")
Insert Into test1 (names) Values ("Hakan")
Insert Into test1 (names) Values ("ali")
Insert Into test1 (names) Values ("ali")
browse
 
Scan
    Replace Names_ID With Recno()
Endscan
 
Scan
    liid = test1.Names_ID
    lcnames = test1.names
    Select * From test1 Where names = m.lcnames Into Cursor countrepeat
    If Reccount("countrepeat") > 1
        Select test1
        Replace names With Alltrim(m.lcnames)+"_"+Transform(m.liid)
    Endif
Endscan
Select test1
Browse

8 Son düzenleyen, ugurlu2001 (11.09.2008 12:20:21)

Re: bir field deki ayni verileri bulmak

O halde bu daha kısası smile

Visual Fox Pro
SELECT * FROM Test1 ORDER BY Names ASC INTO CURSOR CrsTemp READWRITE 

 
LOCAL lcNames, lcPrevNames, lnCounter
 
lnCounter = 0
lcNames = ""
lcPrevNames = ""
 
 
SCAN
    IF  ;
        lcNames = CrsTemp.Names AND ;
        Len(Alltrim(lcNames)) = Len(Alltrim(CrsTemp.Names)) AND ;
        Recno() > 1
 
        lcNames = CrsTemp.Names
        Replace Names WITH Alltrim(Names) + '_' + Alltrim(Str(lnCounter))
        lnCounter = lnCounter + 1
 
    ELSE
        lcNames = CrsTemp.Names
        lnCounter = 1
    ENDIF
 
ENDSCAN
BROWSE
 
RETURN
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

9

Re: bir field deki ayni verileri bulmak

cok tesekkur ederim, tam olarak bole bir kod yapmaya calisiyordum.

10

Re: bir field deki ayni verileri bulmak

Maksat spor olsun:)

Visual Fox Pro
SELECT ;

  PADR(RTRIM(names)+IIF(sayi = 0,'',PADL(sayi,3)), 25) as siraliname ;
FROM ;
  ( SELECT names, ;
       (select COUNT(*) from test1 t2 ;
           where t2.names == t1.names and t2.names_id < t1.names_id) as Sayi FROM ;
        test1 t1 ) tmp

11

Re: bir field deki ayni verileri bulmak

Hehe Çetin yine son noktayı koymuş... smile

Süper...

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

12

Re: bir field deki ayni verileri bulmak

cok tesekkur ederim cetin abi