MySQL 4.0 da Alan parçalayarak parçalara göre sıralama

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

MySQL 4.0 da Alan parçalayarak parçalara göre sıralama

Mesaj gönderen vkamadan »

Merhaba arkadaşlar,
Yapmak istediğim şey şu, örnek veriyorum.
PNO
-----------
12558-224
13654/336
155747:56
------------
yukarıdaki gibi string değerler alabilen bir alanım var, benim amacım - , / yada : gibi rakamdan farklı olan karaktere kadar olan bir kısmını bir sanal alana karakterden sonraki kalan kısmı ise 2.bir farklı bir alana parçalayarak çıkan sonuç alanlarına göre sıralama yaptırmak.
Umarım açık bir şekilde anlatmışımdır.
İlgilene arkadaşlara şimdiden teşekkürler.
Veri tabanım MySQL 4.0
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

calcfield kullanabilirsin ama bu alana göre sıralama yapmak için grid kısmında yada tüm tabloyu memtable a atıp orada sıralattırabilirsin. ama tavsiyem bu alanları 2 field olarak sakla girerken 2 edit ile girilsin, grid içinde gösterirken gene bir calcfield ile birleştirip görebilirsin.
ayırma işlemini copy pos larla yapmam gerek ya birden fazla kaza ilede olsa sayıdan başka birşey girilmişse kontrolüde yapman gerek

kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Sayın, freeman35 alakan için teşekkürler,
ben bu olayı kesinlikle veritabanı seviyesinde yapmak zorundayım.
yani bana bunu yapan MySQL Function'u,(ları) lazım.
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
onaydin

Mesaj gönderen onaydin »

Mysql 5.0 için denedim, kullanılan fonksiyonlar 4.0 da da var ancak order by içinde parçalanan alanı görür mü bilmiyorum
şöyleki;

Kod: Tümünü seç

SELECT NO,METIN,
cast(
SUBSTRING(METIN,1,(LOCATE(':',METIN)-1)) as SIGNED) as ALAN1,
cast(
SUBSTRING(METIN,(LOCATE(':',METIN)+1),LENGTH(METIN)) as SIGNED) as ALAN2
 FROM `yeni` order by ALAN2 DESC
metin diye bir alan var aralıklar ':' belirlenmiş
parçalanacak iki alan olduğu farzedliyor.
Eğer aynı alanda : noktadan farklı farklı ayraçlar varsa bunları da replace ile önce iki noktaya çevirip ardından işlem yapılabilir.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Sayın onaydın,
verdiğin cevap için çok teşekkür ederim çalışmalarında başarılar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
Göndermiş olduğun kodu kendime göre uyarlayarak bir deneme yaptım fakat ilginç bir sonuç aldım, parçalanmış sonuçlar yerine ALAN1=0 ALAN2=0 değerine verdi oysaki ALAN1=volkan ALAN2=KAmadan gibi sonuçlar almama gerekiyordu aşağıda resimleri gönderiyorum,
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

resimleri sildim. Ben de akşamları dial-up bağlandığım için, dial-up kullananlar için bu mesajları açmak büyük sıkıntı. Yazarak izah edebilirsiniz.

Kolay gelsin.
onaydin

Mesaj gönderen onaydin »

verdiğiniz ilk örnekte sayısal ifadeler vardı
1985:2556 benzeri
bende bu alanlar order by a girdiğinde sayısal olarak sıralansın diye
ayrıştıran kısma ek olarak cast fonksiyonu ile char formatında tutulan metni sayısal bir ifadeyle değiştirdim.
Yanlış sonuç bundan kaynaklanıyor
cast fonksiyonunu çıkarırsanız aradan, çalışıverir o zaman.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Çok teşekkürler onaydın bu kod gerçekten bir hayat kurtaracak kadar işime yarayacak saol varol, evet dediğini yapınca çalıştı.
Başarılar.

Sayın Admin,
Forum kurallarında böyle bir kısıtlama görmediğim için böyle bir gaflete düştüm özür dilerim bilgim yoktu yoksa birisi 13k diğeri 34k boyutundaki bir birinden büyük resimleri kesinlikle eklemezdim, bir daha zor durumda kalmadıkça eklemeyeceğim.
Saygılar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

evet bir kural yok ama dikkat etmeniz iyi olur. Dial-up ile bazen 1-2 KB'nin bile değeri büyük oluyor :)

Gösterdiğiniz anlayış ve özen için Teşekkür ederim.

Kolay gelsin.
Cevapla