1 Son düzenleyen, konuka (29.07.2007 09:00:24)

Konu: Select .... Distinct .... Orde By

Selamlar,
bugün itibarı ile vfp6 dan 9 (SP1) geçtim.
tabi üstünde çalıştığım proje ile, ve de bazı uyumsuzlukları çözemiyorum, ltf yardım edin (özellikle -Ali 9u kullan çok etkili diyen dostlar :]  )

eskiden çalışan kod ( matf mf C(20), sira I ) - hedef 'sıra' numaralarına göre sıralayarak 'mf' leri teklemek

SQL
SELE DIST mf FROM matf ORDE BY sira INTO CURS matf


hata kodu: SELECT fieldlerde yoksa ORDE BY çalışmaz

aşağıdaki şekilde değiştirince de

SQL
SELE DIST mf,sira FROM matf ORDE BY sira INTO CURS matf

DISTINCT (tekleme) hedefi gerçekleşmiyor ???

VFP9 SP2

2

Re: Select .... Distinct .... Orde By

yanıt bulamadığımdan ben de kod yazdım:
----

Visual Fox Pro
*SET DELE ON önemli

SELECT matf
GO TOP
DO WHIL ! EOF()
  Xmf=matf.mf
  SKIP
  DO WHIL matf.mf=Xmf
    DELETE
    SKIP
  ENDD
ENDD

--------------

VFP9 SP2

3

Re: Select .... Distinct .... Orde By

bu kod sadece 1 den fazla aynı  olan kayıtları siliyor ama senin istediğin kayıtları süzmek , silmek değil. Bu yüzden bence amacına tam hizmet etmez.

4

Re: Select .... Distinct .... Orde By

Visual Fox Pro
SET ENGINEBEHAVIOR 70

SELE mf FROM matf ORDE BY sira INTO CURS matf group by mf
 
SET ENGINEBEHAVIOR 70
SELE mf,sira FROM matf ORDE BY sira INTO CURS matf group by mf,sira

bi de bunları dene!

Bilmediğin Neyse Yanıldığındır.

5

Re: Select .... Distinct .... Orde By

Çok teşekkür ederim -aşağıda Help'den bir copy/paste var, derdimi Help'e direk taşımış !

A SELECT ? DISTINCT ? ORDER BY command will generate an error if the specified ORDER BY field is not in the SELECT field list.

Ayrıca "The scope of SET ENGINEBEHAVIOR is global" diyor. Bundan eski projelerin en başına

Visual Fox Pro
SET ENGINEBEHAVIOR 70


taşırsak, VFP9 ile derleriz diye düşünüyorum.  acaba doğru mu ?
sevgiler

VFP9 SP2

6 Son düzenleyen, cetinbasoz (30.07.2007 19:43:39)

Re: Select .... Distinct .... Orde By

Distinct ve group by gibi islemler sen istemesen de bir siralama yapiyor. Onun yerine uckagit yapmak isteyebilirsin:

SELECT mf,sira FROM myTable INTO CURSOR temp readwrite
UPDATE temp from mytable SET sira = myTable.sira WHERE myTable.mf == temp.mf
SELECT distinct mf,sira FROM temp ORDER BY sira