[linux-baslangic] Re: sql sorgulama ?

---------

From: Gurkan Aslan (gurkan@iaslan.com)
Date: Fri 26 Mar 2004 - 08:51:03 EST

  • Next message: temiz: "[linux-baslangic] sql sorgulama ?"

    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>
    

  • Next message: temiz: "[linux-baslangic] sql sorgulama ?"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.