Verdiğiniz açıklamaya göre, iki tablo arasında belirli bir ilişkiyi kurarak, "57per_perizin" tablosunda girilen izin sayısının, "57per_perkalan" tablosundaki ilgili yıl içerisinde kullanılan izinlere eklenmesi ve kalan izin miktarının hesaplanması isteniyor. Bu işlemde, tablolar arasında PERSONEID sütunu kullanılarak ilişki kurulacak.
Öncelikle, bu işlemi yapabilmek için SQL sorgusu yazmamız gerekecek. Sorgunun genel mantığı şöyle olacak:
- "57per_perizin" tablosuna girilen izin sayısını alacağız.
- "57per_perkalan" tablosundaki o yıl için kullanılan izin miktarını ("KULLANILAN") güncelleyeceğiz.
- "KULLANILAN" iznini güncelledikten sonra, toplam izin miktarı üzerinden kalan izni hesaplayacağız.
Aşağıda, bu işlemi gerçekleştirecek örnek bir SQL sorgusu verilmiştir:
1. İzin Sayısını Güncelleme
İlk adım olarak, "57per_perizin" tablosunda girilen izin sayısını alıp, "57per_perkalan" tablosundaki ilgili yıl için "KULLANILAN" kolonunu güncellememiz gerekiyor.
`sql
-- Kullanıcıya ait izin verisini al
UPDATE 57per_perkalan
SET KULLANILAN = KULLANILAN + (SELECT izin_sayisi FROM 57per_perizin WHERE PERSONEID = 57per_perkalan.PERSONEID AND YIL = 2024)
WHERE EXISTS (
SELECT 1
FROM 57per_perizin
WHERE PERSONEID = 57per_perkalan.PERSONEID
AND YIL = 2024
);
`
2. Kalan İzin Hesaplama
Kalan izin miktarını hesaplamak için, toplam izin miktarından (örneğin, "TOPLAM_IZIN") kullanılan izin miktarını (yeni güncellenmiş "KULLANILAN") çıkaracağız.
`sql
-- Kalan izni hesaplayıp güncelle
UPDATE 57per_perkalan
SET KALAN_IZIN = TOPLAM_IZIN - KULLANILAN
WHERE EXISTS (
SELECT 1
FROM 57per_perizin
WHERE PERSONEID = 57per_perkalan.PERSONEID
AND YIL = 2024
);
`
Açıklamalar:
- "57per_perizin" tablosunda, her personelin izin sayısı tutuluyor ve buradan izin sayısı çekilerek ilgili yıl için güncelleniyor.
- "57per_perkalan" tablosunda ise her yıl için kullanılan izinler ve toplam izinler yer almakta.
- Kullanıcı ve yıl (YIL) bazında işlem yapılıyor.
- Sonuç olarak, "KULLANILAN" kolonundaki toplam izin miktarı güncelleniyor ve KALAN_IZIN kolonunda kalan izin miktarı hesaplanıyor.
Olası Gelişmiş Durumlar:
- Eğer aynı yıl için birden fazla izin kaydı varsa, toplam izin miktarı 57per_perizin tablosundan toplanabilir.
- Eğer yıl bilgisi dinamik olacaksa, 2024 yerine yıl parametresi kullanarak daha esnek bir yapı oluşturulabilir.
Bu tür işlemler veritabanında genellikle dikkatli bir şekilde test edilmelidir. Umarım bu çözüm sizin ihtiyacınıza uygundur!