kumandan11
Üye
- Katılım
- 4 Ağu 2013
- Mesajlar
- 26
- Puanları
- 1
Amaç işe gelmeyen kişilerin gösterilmesi
İki adet tablom var bunlar Personel_Devamlılık ve RFID_User
RFID_User 'den sadece Name ve ID bilgilerini alıyorum.
3 Vardiya sistemi mevcut : 00:00-08:00, 08:00 - 16:00 , 16:00 - 00:00
Gelen kişileri bulmak için kullandığım sorgu:
Toplam personel: 69
Sonuç: 40 tane gelen kişi görüyorum. Gelen vardiyalar 00:00-08:00, 08:00-16:00 ve 08:00-18:00 Sorun yok doğru sonuç
Gelmeyen kişileri bulmak için kullandığım sorgu:
Sonuç: 22 Personel görüyorum. Doğru sonuç 29 olmalıydı. Aşağıdaki tabloda bulunan vardiyadaki çıkış saati 00:02:21 olan personeli de gelmiş gibi gösteriyor. Bunu nasıl engelleyebilirim.
Gelmeyen kişileri bulmak için kullandığım sorgu aşağıdaki tabloda bulunan tarih ve saatteki veriyide gelmiş gibi gösteriyor. Ama bu önceki günün vardiyası. Ben onlarında gelmemiş gibi gözükmesini istiyorum. Soruguyu düzenlememe yardım edermisiniz.
Şimdide Yardımlarınız için teşekkür ederim.
İki adet tablom var bunlar Personel_Devamlılık ve RFID_User
Name | varchar(100) |
ID | varchar(50) |
Giriş_Tarihi | date |
Giriş_Saati | time(0) |
Giriş_Durumu | varchar(50) |
Çıkış_Tarihi | date |
Çıkış_Saati | time(0) |
Çıkış_Durumu | varchar(50) |
RFID_User 'den sadece Name ve ID bilgilerini alıyorum.
3 Vardiya sistemi mevcut : 00:00-08:00, 08:00 - 16:00 , 16:00 - 00:00
Gelen kişileri bulmak için kullandığım sorgu:
Kod:
SELECT * FROM Personel_Devamlılık WHERE Giriş_Tarihi =CONVERT(date,getdate()) or (Giriş_Saati >= '22:00:00' and Çıkış_Tarihi =CONVERT(date,getdate())) order by Giriş_Saati desc
Toplam personel: 69
Sonuç: 40 tane gelen kişi görüyorum. Gelen vardiyalar 00:00-08:00, 08:00-16:00 ve 08:00-18:00 Sorun yok doğru sonuç
Gelmeyen kişileri bulmak için kullandığım sorgu:
Kod:
select d.[Giriş_Tarihi], d.[Çıkış_Tarihi], e.[ID], e.[Name]
from (select distinct [Giriş_Tarihi]=CONVERT(date,getdate()), [Çıkış_Tarihi]=CONVERT(date,getdate()) from [Personel_Takip].[dbo].[Personel_Devamlılık]) d
cross join [Personel_Takip].[dbo].[RFID_User] e
left join [Personel_Takip].[dbo].[Personel_Devamlılık] a on (a.[Giriş_Tarihi] = d.[Giriş_Tarihi] and a.[ID] = e.[ID]) or (a.[Çıkış_Tarihi] = d.[Çıkış_Tarihi] and a.[ID] = e.[ID] )
where a.[ID] is null
group by d.[Giriş_Tarihi],d.[Çıkış_Tarihi], e.[ID],e.[Name]
Sonuç: 22 Personel görüyorum. Doğru sonuç 29 olmalıydı. Aşağıdaki tabloda bulunan vardiyadaki çıkış saati 00:02:21 olan personeli de gelmiş gibi gösteriyor. Bunu nasıl engelleyebilirim.
Gelmeyen kişileri bulmak için kullandığım sorgu aşağıdaki tabloda bulunan tarih ve saatteki veriyide gelmiş gibi gösteriyor. Ama bu önceki günün vardiyası. Ben onlarında gelmemiş gibi gözükmesini istiyorum. Soruguyu düzenlememe yardım edermisiniz.
Name | ID | Giriş_Tarihi | Giriş_Saati | Giriş_Durumu | Çıkış_Tarihi | Çıkış_Saati | Çıkış_Durumu |
İSİM | CERA54545 | 21.07.2023 | 15:55:05 | GİRİŞ | 22.07.2023 | 00:02:21 | ÇIKIŞ |
Şimdide Yardımlarınız için teşekkür ederim.