İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Yazılım
  4. Diğer Yazılım Konuları
Diğer Yazılım Konuları

SQL-Günlerdir bu sorgu ile uğraşıyorum. Yardımmm

ozgur.altinel18.10.20126 cevap1.704 görüntüleme
#1
Merhaba arkadaşlar. Şirketimizde personel giriş ve çıkışlarda kart basıyor. Bende geç giriş ve çıkışları ve gün içerisinde kart basmayaları takip ediyorum.
Aşağıda 3 adet tablo var. Hareket tablosuna sadece kart basan hareketler geliyor. Kart basmayanları orada göremiyorum.
Benim istediğim Bir sicile ait Aylık rapor aldığımda o sicilin bastığı kartların yanında basmadığı günleri de görmek. Yaptığım tüm sorgularımda HAREKET tablosunda hareket görünen kayıtlar geliyor. Sicile ait bir günde hareket kaydı yoksa göremiyorum. Böyle olunca da kontrol zorlaşıyor benim için.
Günlerdir bunun için uğraşıyorum. Yardımcı olurmusunuz?
dbo.GUNLERdbo.HAREKETdbo.SICILLER
TARIHGUNLERSICILNOKABULTARIHIKABULSAATIHAREKETSICILNOADISOYADI
20120101PAZAR000052012010109:00G00001ASD
20120102PAZARTESİ000062012010109:00G00002ASD
20120103SALI000072012010109:00G00003ASD
20120104ÇARŞAMBA000082012010218:00C00004ASD
20120105PERŞEMBE000092012010218:00C00005ASD
20120106CUMA000102012010218:00C00006ASD
20120107CUMARTESİ000112012010218:00C00007ASD
20120108PAZAR000122012010218:00C00008ASD
20120109PAZARTESİ000132012010218:00C00009ASD
20120110SALI00010ASD
20120111ÇARŞAMBA00011ASD
20120112PERŞEMBE00012ASD
20120113CUMA00013ASD
20120114CUMARTESİ00014ASD
20120115PAZAR00015ASD
20120116PAZARTESİ00016ASD
20120117SALI00017ASD
20120118ÇARŞAMBA00018ASD
20120119PERŞEMBE00019ASD
20120120CUMA00020ASD
20120121CUMARTESİ00021ASD
20120122PAZAR00022ASD
20120123PAZARTESİ00023ASD
20120124SALI00024ASD
20120125ÇARŞAMBA00025ASD
20120126PERŞEMBE00026ASD
20120127CUMA00027ASD
20120128CUMARTESİ00028ASD
20120129PAZAR00029ASD
20120130PAZARTESİ00030ASD
20120131SALI
20120201ÇARŞAMBA
20120202PERŞEMBE
20120203CUMA
20120204CUMARTESİ
20120205PAZAR
Cevaplar
#2
Hocam bu işlerde yeniyim ama şöyle tavsiyede bulanabilirim. Veri tabanında bütün siciller girili mi eğer girili ise belli saatler içerisinde kart basanları bu sicil noları ile kontrol ettirirsin; basanlara G/C değerini verirken basmayanlara ise B değerini verirsin :)
#3
SICIL'de hareket etmeyen var da getiremiyor musun?
Nasıl bir sorgu yazdın? Data varsa da alamadıysan Join yapısıyla ilgilidir.
#4
left outer yada right outer join ile çözebilirsin gibi geliyor. Hergüne ait kayıt gelecektir fakat hereketin olmadığı günlerde hereket kısmı null dönecektir.
 select g.gunler, g.tarih , h.kabultarihi,  h.kabulsaati, h.hareket from dbo.hareket h 
      right outer join dbo.gunler g on h.kabultarihi = g.tarih and h.sicilno = '00008' order by g.tarih


fln en basitinden.
ozgur.altinel Konuyu açan
#5
Arkadaşlar. Sorgum aşağıdaki gibidir.
dbo.SICILLER de şirketteki tüm siciller kayıtlı. dbo.GUNLER de yılın tüm günleri kayıtlı. dbo.HAREKET de gün içinde kart basanlar kayıtlı. Ben kart basan ve basmayanları da görmek istiyorum. Aşağıdaki sorgu sadece dbo.HAREKETLER tablosundaki kayıtları getiriyor. NULL kayıt getirmiyor.

SELECT dbo.SICIL.SICILNO, dbo.SICIL.ADISOYADI, dbo.HAREKET.KABULTARIHI, dbo.HAREKET.KABULSAATI, dbo.HAREKET.HAREKET, dbo.HAREKET.NEDEN,
dbo.GUNLER.DATE, dbo.GUNLER.Gun
FROM dbo.SICIL LEFT OUTER JOIN
dbo.HAREKET ON dbo.SICIL.SICILNO = dbo.HAREKET.SICILNO RIGHT OUTER JOIN
dbo.GUNLER ON dbo.HAREKET.KABULTARIHI = dbo.GUNLER.DATE
GROUP BY dbo.SICIL.SICILNO, dbo.SICIL.ADISOYADI, dbo.HAREKET.KABULTARIHI, dbo.HAREKET.KABULSAATI, dbo.HAREKET.HAREKET, dbo.HAREKET.NEDEN,
dbo.GUNLER.DATE, dbo.GUNLER.Gun
#6
ozgur.altinel dedi: ↑
Arkadaşlar. Sorgum aşağıdaki gibidir.
dbo.SICILLER de şirketteki tüm siciller kayıtlı. dbo.GUNLER de yılın tüm günleri kayıtlı. dbo.HAREKET de gün içinde kart basanlar kayıtlı. Ben kart basan ve basmayanları da görmek istiyorum. Aşağıdaki sorgu sadece dbo.HAREKETLER tablosundaki kayıtları getiriyor. NULL kayıt getirmiyor.

SELECT dbo.SICIL.SICILNO, dbo.SICIL.ADISOYADI, dbo.HAREKET.KABULTARIHI, dbo.HAREKET.KABULSAATI, dbo.HAREKET.HAREKET, dbo.HAREKET.NEDEN,
dbo.GUNLER.DATE, dbo.GUNLER.Gun
FROM dbo.SICIL LEFT OUTER JOIN
dbo.HAREKET ON dbo.SICIL.SICILNO = dbo.HAREKET.SICILNO RIGHT OUTER JOIN
dbo.GUNLER ON dbo.HAREKET.KABULTARIHI = dbo.GUNLER.DATE
GROUP BY dbo.SICIL.SICILNO, dbo.SICIL.ADISOYADI, dbo.HAREKET.KABULTARIHI, dbo.HAREKET.KABULSAATI, dbo.HAREKET.HAREKET, dbo.HAREKET.NEDEN,
dbo.GUNLER.DATE, dbo.GUNLER.Gun
Aşağıdaki şekilde denermisin bi?
SELECT dbo.SICIL.SICILNO, dbo.SICIL.ADISOYADI, dbo.HAREKET.KABULTARIHI, dbo.HAREKET.KABULSAATI, dbo.HAREKET.HAREKET, dbo.HAREKET.NEDEN, dbo.GUNLER.DATE, dbo.GUNLER.Gun
FROM dbo.HAREKET RIGHT OUTER JOIN
dbo.SICIL ON dbo.SICIL.SICILNO = dbo.HAREKET.SICILNO RIGHT OUTER JOIN
dbo.GUNLER ON dbo.HAREKET.KABULTARIHI = dbo.GUNLER.DATE
GROUP BY dbo.SICIL.SICILNO, dbo.SICIL.ADISOYADI, dbo.HAREKET.KABULTARIHI, dbo.HAREKET.KABULSAATI, dbo.HAREKET.HAREKET, dbo.HAREKET.NEDEN, 
dbo.GUNLER.DATE, dbo.GUNLER.Gun
ozgur.altinel Konuyu açan
#7
tambjk sanırım aşağıda ki sorgun işimi görecek. Takılırsam dönerim tekrar. Çok teşekkürler.

select g.gunler, g.tarih , h.kabultarihi, h.kabulsaati, h.hareket from dbo.hareket h right outer join dbo.gunler g on h.kabultarihi = g.tarih and h.sicilno = '00008' order by g.tarih

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.