• 14-07-2014, 17:00:20
    #1
    Merhabalar,
    Benim bir müşteri tablom var.Bu tabloda müşteriye ait bütün bilgiler yazmakta. Birde Plasiyer tablom var bu tablodada plasiyerlerin bilgileri mevcut. Birde AltPlasiyer tablom var buradada alt plasiyer kodları var.

    Benim yapmak istediğim şu: Bir Müşteriyi belirlediğim Plasiyer Görebilsin ama aynı zamanda bu plasiyerin alt plasiyerleri varsa onun müşterilerinide görebilsin.

    Asağıdaki sorguda Plasiyer koduna göre carileri getiriyorum. Tek yapmam gereken TblAltPlasiyer tablomdaki PlasiyerKodu ile birleştirmek Inner Join ve IN komutlarını kullanarak birşeyler yapmaya çalıştım ama olmadı yardımlarınızı bekliyorum şimdiden teşekkür ederim.

    DataTable dt = database.TDataTable("Select top 100 CARILER.dbo.TRK(CARI_ISIM + '~' + CARI_KOD) as CARI_ISIM From CARILER.dbo.TBLCASABIT Where CARI_ISIM LIKE '%" + TxtCariIsim.Text + "%' and PLASIYER_KODU= '" + TxtPlasiyerKodu.Text +"'");
  • 14-07-2014, 19:49:49
    #2
    hiyerarşik düzen kuracaksın. bunun için tablonda iki alan olacak, parentid ve childid diye..

    eğer parentid null ise,bu ağaçtaki en üstteki node yani ana node oluyor. diğer childid ler ise bir üstteki nodun id sini kendi parentid sine yazacak. sistem bu şekilde işliyor..

    http://www.buraksenyurt.com/post/Bin...i-Anlamak.aspx

    burada detaylı örnek var, bu şekilde çözeceksin
  • 15-07-2014, 14:22:02
    #3
    @ertan2002 arkadaşımızın belirttiği sistem en mantıklısıdır hocam bunun ile alt alta 2 basamak değilde sonsuz basamakta oluşturabilirsin...
    Fakat sen tablonu bu şekilde yapılandırmadı isen
    SELECT LEFT JOIN filan bi şekilde onları çekmek yine mümkün en kötü ihtimalle 2 tane select sorgusu yaparsın ( hiç sql bilgin yok ise... )
    asıl iş senin yetkileri tanımladığında bunu nasıl kontrol ediceksin orası önemli
    Yetkileri sen veritabanında kaydederken yetkili_id, yetkilenen_musteri_id gibi bir tablo yapıp her yetkilinin id sini ve ayrıca plasiyerlerin id lerini belirtip musteri id lerine gore mi yapı olusturacaksın ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 14:22:02 -->-> Daha önceki mesaj 14:04:12 --

    3 tane örnek tablo oluşturdum

    ve işte sorgum

    DECLARE
    	@plas_id INT
    SET @plas_id = 2 SELECT
    	dnm_plas_alt.id AS [plasiyer alt id],
    	dnm_plas.id AS [plasiyer üst id],
    	dnm_plas_alt.adi AS [alt plas adi],
    	dnm_plas.adi AS [üst plas adi]
    FROM
    	dnm_plas_alt
    LEFT JOIN dnm_plas ON dnm_plas.id = dnm_plas_alt.plasid
    WHERE
    	dnm_plas.id =@plas_id
    ve sonuç


    plasiyer id sine gore onun alt id lerinide ceken bir sql sonuc cumlesi bu
    bunu istersen sonucta ( MSSQL de yapabilirim diğerleri için kesin birşey söyleyemiyorum ) id leri bile 3,5,6,88,123 diye getirebilirsin ama id ler ayrı tablolarda oldugundan problem yaratır...
  • 18-07-2014, 12:33:48
    #4
    Akiza adlı üyeden alıntı: mesajı görüntüle
    @ertan2002 arkadaşımızın belirttiği sistem en mantıklısıdır hocam bunun ile alt alta 2 basamak değilde sonsuz basamakta oluşturabilirsin...
    Fakat sen tablonu bu şekilde yapılandırmadı isen
    SELECT LEFT JOIN filan bi şekilde onları çekmek yine mümkün en kötü ihtimalle 2 tane select sorgusu yaparsın ( hiç sql bilgin yok ise... )
    asıl iş senin yetkileri tanımladığında bunu nasıl kontrol ediceksin orası önemli
    Yetkileri sen veritabanında kaydederken yetkili_id, yetkilenen_musteri_id gibi bir tablo yapıp her yetkilinin id sini ve ayrıca plasiyerlerin id lerini belirtip musteri id lerine gore mi yapı olusturacaksın ?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 14:22:02 -->-> Daha önceki mesaj 14:04:12 --

    3 tane örnek tablo oluşturdum

    ve işte sorgum

    DECLARE
    	@plas_id INT
    SET @plas_id = 2 SELECT
    	dnm_plas_alt.id AS [plasiyer alt id],
    	dnm_plas.id AS [plasiyer üst id],
    	dnm_plas_alt.adi AS [alt plas adi],
    	dnm_plas.adi AS [üst plas adi]
    FROM
    	dnm_plas_alt
    LEFT JOIN dnm_plas ON dnm_plas.id = dnm_plas_alt.plasid
    WHERE
    	dnm_plas.id =@plas_id
    ve sonuç


    plasiyer id sine gore onun alt id lerinide ceken bir sql sonuc cumlesi bu
    bunu istersen sonucta ( MSSQL de yapabilirim diğerleri için kesin birşey söyleyemiyorum ) id leri bile 3,5,6,88,123 diye getirebilirsin ama id ler ayrı tablolarda oldugundan problem yaratır...
    Yardımlarınızdan dolayı teşekkürler sorgu şeklinde çözdüm