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

ozgur.altinel

Öğrenci
Katılım
25 Mart 2011
Mesajlar
3
Reaksiyon puanı
0
Puanları
0
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?


[TABLE="width: 736"]
[TR]
[TD="colspan: 2"]dbo.GUNLER[/TD]
[TD][/TD]
[TD="colspan: 4"]dbo.HAREKET[/TD]
[TD][/TD]
[TD="colspan: 2"]dbo.SICILLER[/TD]
[/TR]
[TR]
[TD]TARIH[/TD]
[TD]GUNLER[/TD]
[TD][/TD]
[TD]SICILNO[/TD]
[TD]KABULTARIHI[/TD]
[TD]KABULSAATI[/TD]
[TD]HAREKET[/TD]
[TD][/TD]
[TD]SICILNO[/TD]
[TD]ADISOYADI[/TD]
[/TR]
[TR]
[TD]20120101[/TD]
[TD]PAZAR[/TD]
[TD][/TD]
[TD]00005[/TD]
[TD]20120101[/TD]
[TD]09:00[/TD]
[TD]G[/TD]
[TD][/TD]
[TD]00001[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120102[/TD]
[TD]PAZARTESİ[/TD]
[TD][/TD]
[TD]00006[/TD]
[TD]20120101[/TD]
[TD]09:00[/TD]
[TD]G[/TD]
[TD][/TD]
[TD]00002[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120103[/TD]
[TD]SALI[/TD]
[TD][/TD]
[TD]00007[/TD]
[TD]20120101[/TD]
[TD]09:00[/TD]
[TD]G[/TD]
[TD][/TD]
[TD]00003[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120104[/TD]
[TD]ÇARŞAMBA[/TD]
[TD][/TD]
[TD]00008[/TD]
[TD]20120102[/TD]
[TD]18:00[/TD]
[TD]C[/TD]
[TD][/TD]
[TD]00004[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120105[/TD]
[TD]PERŞEMBE[/TD]
[TD][/TD]
[TD]00009[/TD]
[TD]20120102[/TD]
[TD]18:00[/TD]
[TD]C[/TD]
[TD][/TD]
[TD]00005[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120106[/TD]
[TD]CUMA[/TD]
[TD][/TD]
[TD]00010[/TD]
[TD]20120102[/TD]
[TD]18:00[/TD]
[TD]C[/TD]
[TD][/TD]
[TD]00006[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120107[/TD]
[TD]CUMARTESİ[/TD]
[TD][/TD]
[TD]00011[/TD]
[TD]20120102[/TD]
[TD]18:00[/TD]
[TD]C[/TD]
[TD][/TD]
[TD]00007[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120108[/TD]
[TD]PAZAR[/TD]
[TD][/TD]
[TD]00012[/TD]
[TD]20120102[/TD]
[TD]18:00[/TD]
[TD]C[/TD]
[TD][/TD]
[TD]00008[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120109[/TD]
[TD]PAZARTESİ[/TD]
[TD][/TD]
[TD]00013[/TD]
[TD]20120102[/TD]
[TD]18:00[/TD]
[TD]C[/TD]
[TD][/TD]
[TD]00009[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120110[/TD]
[TD]SALI[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00010[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120111[/TD]
[TD]ÇARŞAMBA[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00011[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120112[/TD]
[TD]PERŞEMBE[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00012[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120113[/TD]
[TD]CUMA[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00013[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120114[/TD]
[TD]CUMARTESİ[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00014[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120115[/TD]
[TD]PAZAR[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00015[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120116[/TD]
[TD]PAZARTESİ[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00016[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120117[/TD]
[TD]SALI[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00017[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120118[/TD]
[TD]ÇARŞAMBA[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00018[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120119[/TD]
[TD]PERŞEMBE[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00019[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120120[/TD]
[TD]CUMA[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00020[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120121[/TD]
[TD]CUMARTESİ[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00021[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120122[/TD]
[TD]PAZAR[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00022[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120123[/TD]
[TD]PAZARTESİ[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00023[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120124[/TD]
[TD]SALI[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00024[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120125[/TD]
[TD]ÇARŞAMBA[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00025[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120126[/TD]
[TD]PERŞEMBE[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00026[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120127[/TD]
[TD]CUMA[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00027[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120128[/TD]
[TD]CUMARTESİ[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00028[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120129[/TD]
[TD]PAZAR[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00029[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120130[/TD]
[TD]PAZARTESİ[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]00030[/TD]
[TD]ASD[/TD]
[/TR]
[TR]
[TD]20120131[/TD]
[TD]SALI[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]20120201[/TD]
[TD]ÇARŞAMBA[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]20120202[/TD]
[TD]PERŞEMBE[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]20120203[/TD]
[TD]CUMA[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]20120204[/TD]
[TD]CUMARTESİ[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]20120205[/TD]
[TD]PAZAR[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[/TABLE]
 

Hello Kitty.

Rektör
Katılım
14 Ağustos 2008
Mesajlar
12,189
Reaksiyon puanı
104
Puanları
3,243
Konum
kuytu köşe
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 :)
 

thekillingroad

Profesör
Katılım
10 Eylül 2012
Mesajlar
1,510
Reaksiyon puanı
1
Puanları
218
SICIL'de hareket etmeyen var da getiremiyor musun?
Nasıl bir sorgu yazdın? Data varsa da alamadıysan Join yapısıyla ilgilidir.
 

tambjk

Profesör
Katılım
10 Mayıs 2011
Mesajlar
3,263
Reaksiyon puanı
16
Puanları
218
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.

Kod:
 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

Öğrenci
Katılım
25 Mart 2011
Mesajlar
3
Reaksiyon puanı
0
Puanları
0
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
 

tambjk

Profesör
Katılım
10 Mayıs 2011
Mesajlar
3,263
Reaksiyon puanı
16
Puanları
218
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?

Kod:
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

Öğrenci
Katılım
25 Mart 2011
Mesajlar
3
Reaksiyon puanı
0
Puanları
0
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
 
Üst