+1 oy
2.7k Görünüm
MySQL kategorisinde tarafından
Merhaba 57per_perizin Tabloma izin sayisi girildiğinde  57per_perkalan tablomdaki O YIL içerisinde kullanılan 'KULLANILAN' Kolonuna sayinin gelmesi, TOPLAM izin ve KULLANILAN izinden KALAN iznin yansıması.

 

NOT: TABLOLARDA PERSONEID TUTULMAKTADIR.
Paylaş

1 cevap

+1 oy
(3.3k puan) tarafından
tarafından seçilmiş
 
En İyi Cevap

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:

  1. "57per_perizin" tablosuna girilen izin sayısını alacağız.
  2. "57per_perkalan" tablosundaki o yıl için kullanılan izin miktarını ("KULLANILAN") güncelleyeceğiz.
  3. "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:

  1. "57per_perizin" tablosunda, her personelin izin sayısı tutuluyor ve buradan izin sayısı çekilerek ilgili yıl için güncelleniyor.
  2. "57per_perkalan" tablosunda ise her yıl için kullanılan izinler ve toplam izinler yer almakta.
  3. Kullanıcı ve yıl (YIL) bazında işlem yapılıyor.
  4. 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!

Bu Hafta En Aktif Üyeler
    ...