From: Gurkan Aslan (gurkan@iaslan.com)
Date: Fri 26 Mar 2004 - 08:51:03 EST
On Fri, 2004-03-26 at 15:15, temiz wrote:
> Gurkan Aslan wrote:
>
> >On Fri, 2004-03-26 at 12:00, temiz wrote:
> >
> >
> >>merhaba
> >>
> >>posrgresql ile iki veri tablosunu birbirine baglamak isitiyorum.
> >>ortak sutunlar koy isimleri fakat tam olarak ayni yazilmamislar.
> >>"tahta koy" vs "tahtali koy" gibi (bunlar ayni koy) .
> >>soyle yaptim.
> >>
> >>select * from a,b where a.koy=b.koy
> >>
> >>fakat "=" ayni isimleri yakaliyor. Benzerlikleri de
> >>iliskilendirmek istiyorum
> >>duzenli ifadeler kullanmak istesem
> >>b.koy yerinde bir string istiyor. Yani
> >>select * from a,b where a.koy ~ 'koy_ismi' gibi
> >>sag tarafa sutun ismi girmek durumunda
> >>oldugum icin ne yapmaliyim
> >>
> >>
> ilginiz icin tesekkur ederim
>
> >like operatorunu deneyebilirsiniz...
> >select * from a where a.koy like "tahtali%" yaptiginiz zaman tahtali ile
> >baslayanlari listeler...
> >
> iyi de
> like dan sonra string yerine tablo sutunu vermem gerekiyor.
> tahtali gibi binlerce koy vardir herhalde
>
> >
> >sizin ornek ise cok komplex oldugu icin bir ayiklama islemine
> >ihtiyaciniz olacak... Yani ilgili sorgudaki b.koy dediginiz kismin ornek
> >olarak ilk uc harfini alip (joiner table olarak) onlara gore like ile
> >islem yaptirmaniz gerekiyor v.s.... Isin veritabani tarafi disinda da
> >kod yazmaniz gerekecek
> >
> sikintim like in sag tarafina bir sekilde sutun ismi yazamamak.
>
Eger dikkatli okursaniz orada bir ayristiriciya, yani sql kodu disinda
"Isin veritabani tarafi disinda kod yazmaniz gerekecek" diye bir
aciklama var... Biraz acayim;
Oncelikle bir sorguda B adini verdiginiz alanlarin tamamini programatik
olarak (C, C++, C#, Pascal artik ne kullaniyorsaniz) alip, karar
verdiginiz kadar katar sayisini ayiklayip (Ornegin B.Koy isminin ilk uc
harfini alsin ve ona gore karsilastirsin istiyorsaniz) bu haliyle (yani
sadece ilk uc harfini iceren haliyle) bir listeye atmaniz gerekmekte...
Daha sonra da sorgu sirasinda;
SELECT * FROM A WHERE A.KOY LIKE IN (KOY1, KOY2, KOY3...)
seklinde bir sorgu ureteceksiniz... Buradaki KOY1, KOY2 olan kismi
listenizden cekeceginiz degerleri programatik olarak atayacaksiniz ve
sonuna % vereceksiniz... Bu is tabii program tarafindan yapilmis olacak
ve program size soyle bir sonuc uretmis olacak:
(Tahtali, Gunesli ve Benez olsun ornek isimlerimizin ilk uc tanesi)
SELECT * FROM A WHERE A.KOY LIKE IN ("TAH%","GUN%","BEN%")
Icinde bulundugunuz komplex duruma dair en uygun ayiklama bu olsa
gerek... Ya da ilk 4 harfi aldirmak... Bundan daha programatik birsey
bulundugunuz kosul acisindan cok zor: Netekim bu veritabanlarini
hazirlayan adamlar dokumanlarda israrla: "Bu duruma dusmek
istemiyorsaniz kendi ID'nizi kullanin" diyor :)
Uzun oldu ama umarim bu sefer dogru vizyonu yaratabilmisimdir
kafanizda...
> >
> >En onemlisi: Bu olay size soyle bir tecrube kazandirmis olmali: Iliskili
> >tablolar kullanicinin eline birakilmaz, dolayisiyla isim alanlarindan
> >tablo iliskileri olusturulmaz... Bu tip olaylar icin Primary key ve Auto
> >Increment olarak tanimlayacaginiz numerik alanlari kullanmaniz
> >yarariniza olacaktir...
> >
> cok haklisiniz. Ancak veri tabanlari ayri kurumlarda hazirlanmis.
> sadece koy isimleri - kismen - ortak. Ben sadece birlestirmeye calisiyorum
>
> >
> >
> >>saygilar
> >>
> >>Ahmet Temiz
> >>
> >>
> >>
> >>
> >>______________________________________
> >>Inflex - installed on mailserver for domain @deprem.gov.tr
> >>Queries to: postmaster@deprem.gov.tr
> >>
> >>______________________________________
> >>The views and opinions expressed in this e-mail message are the sender's own
> >>and do not necessarily represent the views and the opinions of Earthquake Research Dept.
> >>of General Directorate of Disaster Affairs.
> >>
> >>Bu e-postadaki fikir ve gorusler gonderenin sahsina ait olup, yasal olarak T.C.
> >>B.I.B. Afet Isleri Gn.Mud. Deprem Arastirma Dairesi'ni baglayici nitelikte degildir.
> >>
> >>---
> >>linux-baslangic listesinden cikmak ve tum listeci islemleri icin
> >>http://liste.linux.org.tr/ adresini kullanabilirisniz.
> >>Bu listeden cikmak icin
> >><a href="mailto:linux-baslangic-request@liste.linux.org.tr?Subject=unsubscribe"> tiklayiniz</a>
> >>
> >>
> >>
>
>
>
> ______________________________________
> Inflex - installed on mailserver for domain @deprem.gov.tr
> Queries to: postmaster@deprem.gov.tr
>
> ______________________________________
> The views and opinions expressed in this e-mail message are the sender's own
> and do not necessarily represent the views and the opinions of Earthquake Research Dept.
> of General Directorate of Disaster Affairs.
>
> Bu e-postadaki fikir ve gorusler gonderenin sahsina ait olup, yasal olarak T.C.
> B.I.B. Afet Isleri Gn.Mud. Deprem Arastirma Dairesi'ni baglayici nitelikte degildir.
>
> ---
> linux-baslangic listesinden cikmak ve tum listeci islemleri icin
> http://liste.linux.org.tr/ adresini kullanabilirisniz.
> Bu listeden cikmak icin
> <a href="mailto:linux-baslangic-request@liste.linux.org.tr?Subject=unsubscribe"> tiklayiniz</a>
>
-- Hazar Agency & Computer Systems (GNU/Linux Solutions) Phone: +90 212 356 65 56 +90 212 356 62 75 Projects and Software Development Department Manager Gurkan ASLAN (a.k.a. Integer) -- Attached file included as plaintext by Ecartis -- -- File: signature.asc -- Desc: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBAZDVGt+ZedpV+bSoRAmmYAJ0Ys2NZEuGTD8R0i9J1AtExRL2QhQCg3YA2 1Mb0Enj5tHKlMcka3ccJcvo= =z9qX -----END PGP SIGNATURE----- --- linux-baslangic listesinden cikmak ve tum listeci islemleri icin http://liste.linux.org.tr/ adresini kullanabilirisniz. Bu listeden cikmak icin <a href="mailto:linux-baslangic-request@liste.linux.org.tr?Subject=unsubscribe"> tiklayiniz</a>