none
Sql Tablo Birleştirme (Yanlıslık Var) RRS feed

  • Soru

  • merhabalar. ögrenci giriş çıkış uygulaması geliştirmekteyim

    2 tane sql tablom bulunmakta 

    1-TBLGIRIS

    2-TBLCIKIS

    ögrenci 26.09.2016 tarihinde giriş yapıpı çıkış yapmıyor,

    aynı ögrenci 28.09.2016 tarihinde hem giriş hem çıkış yapıyor.

    ama çıkan sonuç bu şekilde

    ama aslında inner joinle tabloyu birleştirdiğimde ortaya çıkan olay 

    ASLINDA BU ŞEKİLDE GELMESİ LAZIM 

    SQL CUMLEM 

    SELECT TBLGIRIS.Ogrenci,TBLGIRIS.tcno as Tc,TBLGIRIS.giris as Giris,TBLGIRIS.gtarih as GirisTarihi,TBLCIKIS.cikis as Çıkış,TBLCIKIS.ctarih as ÇıkışTarihi FROM TBLGIRIS inner join TBLCIKIS on TBLGIRIS.tcno=TBLCIKIS.tcno 

    26 Eylül 2016 Pazartesi 18:47

Yanıtlar

  • Select o.TcNo,o.AdSoyad, g.Tip,g.tarih, c.Tip,c.Tarih from OgrenciTablosu o

    Left Join GirisCikisTablosu g on g.TcNo=o.TcNo And g.Tip=1

    Left Join GirisCikisTablosu c on c.TcNo=o.TcNo And c.tip=0

    gibi

    Giriş ya da çıkış yoksa Null değer getirir o alan için.


    http://pgnchess.com
    http://dergikapaklari.com


    • Düzenleyen Halil TAŞ 26 Eylül 2016 Pazartesi 19:43
    • Yanıt Olarak İşaretleyen Anıl Demirtaş 26 Eylül 2016 Pazartesi 19:44
    26 Eylül 2016 Pazartesi 19:35

Tüm Yanıtlar

  • Oncelikle aslında 3 tablonuz olması gerekiyor veya iki tablo ama giriş ve çıkışlar bir tabloda. Diğer tablonun ise Öğrenci TC ve ad soyad gibi bilgileri tutması gerekiyor. Girişçıkış tablosu zaten aynı bilgileri içerdiği için ayrı tablo yapmaya gerek yok. Sadece tip diye bir alan eklersiniz giriş mi yapmış çıkış mı onu tip alanına kaydersiniz. (bit olabilir giriş için true çıkış için false gibi)

    sonrasında ise Left Join kullanmanız gerekiyor. inner join bire-bir eşleşme için kullanılır. sizde ise solda olan değerin, sağda olmasa bile gösterilmesi gerekiyor.



    http://pgnchess.com
    http://dergikapaklari.com

    26 Eylül 2016 Pazartesi 19:11
  • teşekkur ederim fakat, dediğiniz işleyiş ile aynı gidiyorum yine bu sonucu alıyorum
    26 Eylül 2016 Pazartesi 19:27
  • Inner ı outer yap sonuna and cast(gtarih as date) = cast(ctarih as date) ekle
    26 Eylül 2016 Pazartesi 19:33
  • Select o.TcNo,o.AdSoyad, g.Tip,g.tarih, c.Tip,c.Tarih from OgrenciTablosu o

    Left Join GirisCikisTablosu g on g.TcNo=o.TcNo And g.Tip=1

    Left Join GirisCikisTablosu c on c.TcNo=o.TcNo And c.tip=0

    gibi

    Giriş ya da çıkış yoksa Null değer getirir o alan için.


    http://pgnchess.com
    http://dergikapaklari.com


    • Düzenleyen Halil TAŞ 26 Eylül 2016 Pazartesi 19:43
    • Yanıt Olarak İşaretleyen Anıl Demirtaş 26 Eylül 2016 Pazartesi 19:44
    26 Eylül 2016 Pazartesi 19:35
  • işin içinde saat olduğundan saniye farkı yaşanıyor,yoksa dediğiniz doğru oluyor. saat olayı olunca saniyeler uyaşmadığından farklı satıra atıyor.
    26 Eylül 2016 Pazartesi 19:40
  • Ben yaklasik son 15+ senedir benzer isler yapiyorum ve giris/cikis ayni tabloda iki ayri kolonda tutuluyor.

    kayitId, ogrenciId, girisTarihSaat, cikisTarihSaat, ....

    gibi. Yani cikisTarihSaat mevcut olan son giris icin bir update islemi.

    26 Eylül 2016 Pazartesi 22:01