none
az ve çok kayıtlı tablodaki verileri birleştirme RRS feed

  • Soru

  • örneğin elimizde şöyle bir tablo var

    sicil   Tarih                    asilmi

    12 15/01/2013          asil

    12    20/01/2013          yedek

    anahtar alan sicil ve tarih 

    ikinci tablo ise kişinin kart basarak giriş ve çıkış yaptığı tablo

    sicil  giriş                       çıkış                            

    12  15/01/2013 08:00 15/01/2013 17:00       

    12  16/01/2013 08:00 16/01/2013 17:00      

    12  17/01/2013 08:00 17/01/2013 17:00       

    12  18/01/2013 08:00 18/01/2013 17:00       

    12  19/01/2013 08:00 19/01/2013 17:00      

    12  20/01/2013 08:00 20/01/2013 17:00    

    12  21/01/2013 08:00 21/01/2013 17:00    

    anahtar alan sicil

    şimdi de ben bu iki tabloyu birleştirip şu şekle sokmak istiyorum 

    sicil  giriş- çıkış                                            asilmi

    12  15/01/2013 08:00 15/01/2013 17:00   asil    

    12  16/01/2013 08:00 16/01/2013 17:00   asil   

    12  17/01/2013 08:00 17/01/2013 17:00   asil

    12  18/01/2013 08:00 18/01/2013 17:00   asil    

    12  19/01/2013 08:00 19/01/2013 17:00   asil   

    12  20/01/2013 08:00 20/01/2013 17:00   yedek 

    12  21/01/2013 08:00 21/01/2013 17:00   yedek 


    bilgin

    5 Haziran 2013 Çarşamba 07:57

Yanıtlar

  • TABLO1: SICIL,TARIH,ASILMI  

    TABLO2:SICIL,GIRIS,CIKIS

    SELECT SICIL,GIRIS,CIKIS,
    (SELECT TOP 1 ASILMI FROM TABLO1 
    WHERE SICIL=T2.SICIL AND CONVERT(VARCHAR(10),TARIH,102)<=CONVERT(VARCHAR(10),T2.GIRIS,102)
    ORDER BY SICIL,TARIH DESC) AS ASIL_YEDEK
    FROM TABLO2 T2



    7 Haziran 2013 Cuma 08:10

Tüm Yanıtlar

  • Merhaba

    Sicilmi kolonuna ikinci tablodaki giris kolonuna gore belirlediginizi varsayarsak asgidaki query istediginiz sonucu verir

    SELECT a.sicil, CONVERT(VARCHAR, a.giriş, 120)+' '+CONVERT(VARCHAR, çıkış, 120) as [giriş- çıkış], b.sicilmi
    FROM ikincitablo a
    INNER JOIN ilktablo b
    on a.sicil = b.sicil and cast(a.giriş as date) = b.tarih


    • Düzenleyen Ali Yesilli 5 Haziran 2013 Çarşamba 13:44
    5 Haziran 2013 Çarşamba 13:44
  • ilk tablonuzda açıklanması gerekenler var.

    her sicil 2 kayda mı sahip?

    önce 'asil' sonra 'yedek' mi? olunuyor. Tersi olmuyor mu?

    sadece yedek veya sadece asil olarak kayıtlı sicil'ler var mı?

    bir sicil'in asil veya yedek olma durumu sürekli değişiyor mu? yani

    12 no lu sicil ilk tarihte asil, ikinci tarihte yedek, üçüncü tarih'te tekrar asil v.s. oluyor mu?

    Tablo 2'deki tarihi parametre olarak alıp

    sonucunu asil veya yedek olarak döndüren user define function ile çözebilirsiniz

    6 Haziran 2013 Perşembe 07:00
  • ilk tablonuzda açıklanması gerekenler var.

    her sicil 2 kayda mı sahip?

    önce 'asil' sonra 'yedek' mi? olunuyor. Tersi olmuyor mu?

    sadece yedek veya sadece asil olarak kayıtlı sicil'ler var mı?

    bir sicil'in asil veya yedek olma durumu sürekli değişiyor mu? yani

    12 no lu sicil ilk tarihte asil, ikinci tarihte yedek, üçüncü tarih'te tekrar asil v.s. oluyor mu?

    Tablo 2'deki tarihi parametre olarak alıp

    sonucunu asil veya yedek olarak döndüren user define function ile çözebilirsiniz

    aynen dediğinizi gibi asil ve yedek durumu değişken 

    bilgin

    7 Haziran 2013 Cuma 05:18
  • TABLO1: SICIL,TARIH,ASILMI  

    TABLO2:SICIL,GIRIS,CIKIS

    SELECT SICIL,GIRIS,CIKIS,
    (SELECT TOP 1 ASILMI FROM TABLO1 
    WHERE SICIL=T2.SICIL AND CONVERT(VARCHAR(10),TARIH,102)<=CONVERT(VARCHAR(10),T2.GIRIS,102)
    ORDER BY SICIL,TARIH DESC) AS ASIL_YEDEK
    FROM TABLO2 T2



    7 Haziran 2013 Cuma 08:10
  • TABLO1: SICIL,TARIH,ASILMI  

    TABLO2:SICIL,GIRIS,CIKIS

    SELECT SICIL,GIRIS,CIKIS,
    (SELECT TOP 1 ASILMI FROM TABLO1 
    WHERE SICIL=T2.SICIL AND CONVERT(VARCHAR(10),TARIH,102)<=CONVERT(VARCHAR(10),T2.GIRIS,102)
    ORDER BY SICIL,TARIH DESC) AS ASIL_YEDEK
    FROM TABLO2 T2



    işte bundan bahsediyordum teşekkürler

    bilgin

    7 Haziran 2013 Cuma 12:14