[SORGU] İstenilen Şekilde Veriyi Saydırma
#1
Merhaba,

Daha öncesinde de buna benzer bir soru sormuştum ve sağ olsun dsezgin83260 kullanıcı yardımcı olmuştu. Yalnız o tabloyu daha sade hale getirip ekte sunmaktayım. İstenileni daha belirgin hale getirip sorguyu çalıştırdığımda ekte yer alan sorgu_asil excel tablosunda oluğu gibi bana veriyi dökmesi gerekmekte.

Yalnız iki sorgu oluşturuldu ama bu sorgularda daha ileri gidilemedi;
1. Sorgu;
SQL
  1. SELECT kurum_adi, sinif_adi, unvanadi, bransadi,
  2. SUM(kadrolu) AS kadrolus,
  3. SUM(kadrolu_aktif) AS kadrolu_aktifs,
  4. SUM(gecici_gorevli) AS gecici_gorevlis
  5. FROM
  6. (SELECT k.kurum_adi, s.sinif_adi,
  7. (SELECT b.brans_adi FROM 3_brans b WHERE p.personel_brans = b.brans_id) AS bransadi,
  8. (SELECT u.unvan_adi FROM 2_unvan u WHERE p.personel_unvan = u.unvan_id) AS unvanadi,
  9. p.personel_kadro_kurum, k.kurum_id, p.personel_calistigi_kurum,
  10. IIf(p.personel_kadro_kurum=k.kurum_id,1,0) AS kadrolu,
  11. iif(p.personel_calistigi_kurum = k.kurum_id AND p.personel_calistigi_kurum = p.personel_kadro_kurum, 1,0) AS kadrolu_aktif,
  12. iif(p.personel_calistigi_kurum = k.kurum_id AND p.personel_calistigi_kurum <> p.personel_kadro_kurum, 1,0) AS gecici_gorevli
  13. FROM personel AS p, kurumlar AS k, 1_sinif AS s
  14. WHERE ((k.kurum_kodu) IS NOT NULL)
  15. AND (p.personel_kadro_kurum = k.kurum_id OR p.personel_calistigi_kurum = k.kurum_id)
  16. AND p.personel_sinif = s.sinif_id)
  17. GROUP BY kurum_adi, sinif_adi, unvanadi, bransadi;



Sorgu çalıştırıldığında ekte yer alan sorgu1 excel tablosunda olduğu gibi çıktı vermekte.


2. Sorgu;
SQL
  1. SELECT kurum_adi, sinif_adi, unvanadi, bransadi,
  2. SUM(kadrolu) AS kadrolus,
  3. SUM(kadrolu_aktif) AS kadrolu_aktifs,
  4. SUM(gecici_gorevli) AS gecici_gorevlis
  5. FROM
  6. (SELECT k.kurum_adi, s.sinif_adi,
  7. (SELECT b.brans_adi FROM 3_brans b WHERE IIf(p.personel_yandal_asistan IS NULL,p.personel_brans = b.brans_id, p.personel_yandal_asistan=b.brans_id)) AS bransadi,
  8. (SELECT u.unvan_adi FROM 2_unvan u WHERE IIf(p.personel_yandal_asistan IS NULL,p.personel_unvan = u.unvan_id, 42=u.unvan_id)) AS unvanadi,
  9. p.personel_kadro_kurum, k.kurum_id, p.personel_calistigi_kurum,
  10. IIf(p.personel_kadro_kurum=k.kurum_id,1,0) AS kadrolu,
  11. iif(p.personel_calistigi_kurum = k.kurum_id AND p.personel_calistigi_kurum = p.personel_kadro_kurum, 1,0) AS kadrolu_aktif,
  12. iif(p.personel_calistigi_kurum = k.kurum_id AND p.personel_calistigi_kurum <> p.personel_kadro_kurum, 1,0) AS gecici_gorevli
  13. FROM personel AS p, kurumlar AS k, 1_sinif AS s
  14. WHERE ((k.kurum_kodu) IS NOT NULL)
  15. AND (p.personel_kadro_kurum = k.kurum_id OR p.personel_calistigi_kurum = k.kurum_id)
  16. AND p.personel_sinif = s.sinif_id)
  17. GROUP BY kurum_adi, sinif_adi, unvanadi, bransadi;



Sorgu çalıştırıldığında ekte yer alan sorgu2 excel tablosunda olduğu gibi çıktı vermekte.

Yukarda da bahsettiğim gibi benim işime yarayan ekte yer alan sorgu_asil excel tablosunda olduğu gibi. Tablo yapım mı acaba bu sorguyu yazmama izin vermemekte. Bu konuda yardımcı olabilirseniz çok memnun olacağım.

Umarım bir yol alınabilir bu konuda.

İyi geceler.



Eklenti Dosyaları
.rar   vt.rar (Boyut: 282,39 KB / İndirilme: 57)



  Alıntı
Bu mesajı beğenenler:
#2
Merhaba tekrardan,

Yukarda bahsetmiş olduğum sorgu için ne yapılabilir? Yardımcı olunması dileğiyle.

İyi geceler.



  Alıntı
Bu mesajı beğenenler:
#3
Tekrardan Merhaba Herkese,

Veri tabanı yapıma bakılıp yapmak istediğim sorgu çıktısının olurluğu acaba hiç mi yok. Çünkü bildiğim bilgilerle olmaz gibi duruyor. İstenile nasıl ulaşabilirim?

İyi günler.



  Alıntı
Bu mesajı beğenenler:
#4
Merhaba,

Yukarda bahsettiğim durumu tek sorguda yazamıyorum yoksa ayrı ayrı sorgularda yazılabilmekte.

Yalnızca Kadrolu için;;
SQL
  1. SELECT kurum_adi, sinif_adi, unvanadi, bransadi,
  2. SUM(kadrolu) AS kadrolus
  3. FROM
  4. (SELECT k.kurum_adi, s.sinif_adi,
  5. (SELECT b.brans_adi FROM 3_brans b WHERE p.personel_brans = b.brans_id) AS bransadi,
  6. (SELECT u.unvan_adi FROM 2_unvan u WHERE p.personel_unvan = u.unvan_id) AS unvanadi,
  7. p.personel_kadro_kurum, k.kurum_id, p.personel_calistigi_kurum,
  8. IIf(p.personel_kadro_kurum=k.kurum_id,1,0) AS kadrolu
  9. FROM personel AS p, kurumlar AS k, 1_sinif AS s
  10. WHERE ((k.kurum_kodu) IS NOT NULL)
  11. AND (p.personel_kadro_kurum = k.kurum_id OR p.personel_calistigi_kurum = k.kurum_id)
  12. AND p.personel_sinif = s.sinif_id)
  13. GROUP BY kurum_adi, sinif_adi, unvanadi, bransadi;



Yalnıca Kadrolu aktif çalışan için;
SQL
  1. SELECT kurum_adi, sinif_adi, unvanadi, bransadi,
  2. SUM(kadrolu_aktif) AS kadrolu_aktifs
  3. FROM
  4. (SELECT k.kurum_adi, s.sinif_adi,
  5. (SELECT b.brans_adi FROM 3_brans b WHERE IIf(p.personel_yandal_asistan IS NULL,p.personel_brans = b.brans_id, p.personel_yandal_asistan=b.brans_id)) AS bransadi,
  6. (SELECT u.unvan_adi FROM 2_unvan u WHERE IIf(p.personel_yandal_asistan IS NULL,p.personel_unvan = u.unvan_id, 42=u.unvan_id)) AS unvanadi,
  7. p.personel_kadro_kurum, k.kurum_id, p.personel_calistigi_kurum,
  8. iif(p.personel_vekalet IS NULL AND p.personel_calistigi_kurum = k.kurum_id AND p.personel_calistigi_kurum = p.personel_kadro_kurum,1,0) AS kadrolu_aktif
  9. FROM personel AS p, kurumlar AS k, 1_sinif AS s
  10. WHERE ((k.kurum_kodu) IS NOT NULL)
  11. AND (p.personel_kadro_kurum = k.kurum_id OR p.personel_calistigi_kurum = k.kurum_id)
  12. AND p.personel_sinif = s.sinif_id)
  13. GROUP BY kurum_adi, sinif_adi, unvanadi, bransadi;



Yalnızca Geçici Görevli için;
SQL
  1. SELECT kurum_adi, sinif_adi, unvanadi, bransadi,
  2. SUM(gecici_gorevli) AS gecici_gorevlis
  3. FROM
  4. (SELECT k.kurum_adi, s.sinif_adi,
  5. (SELECT b.brans_adi FROM 3_brans b WHERE IIf(p.personel_yandal_asistan IS NULL,p.personel_brans = b.brans_id, p.personel_yandal_asistan=b.brans_id)) AS bransadi,
  6. (SELECT u.unvan_adi FROM 2_unvan u WHERE IIf(p.personel_yandal_asistan IS NOT NULL,42=u.unvan_id,iif(p.personel_vekalet IS NOT NULL ,41=u.unvan_id,p.personel_unvan = u.unvan_id))) AS unvanadi,
  7. p.personel_kadro_kurum, k.kurum_id, p.personel_calistigi_kurum,
  8. iif(p.personel_calistigi_kurum = k.kurum_id AND iif(p.personel_vekalet IS NULL,p.personel_calistigi_kurum <> p.personel_kadro_kurum,p.personel_calistigi_kurum = p.personel_kadro_kurum),1,0) AS gecici_gorevli
  9. FROM personel AS p, kurumlar AS k, 1_sinif AS s
  10. WHERE ((k.kurum_kodu) IS NOT NULL)
  11. AND (p.personel_kadro_kurum = k.kurum_id OR p.personel_calistigi_kurum = k.kurum_id)
  12. AND p.personel_sinif = s.sinif_id)
  13. GROUP BY kurum_adi, sinif_adi, unvanadi, bransadi;



Sorun yukarda 3 durum saydırma işlemini tek bir sorguda gerçekleştirememek.

Bunun en büyük nedeni ise branş ve unvan kısmını getirirken farklı farklı ifadeler kullanmak zorunda kalmam. Bu da tek bir sorguda yazmama engel teşkil etmekte.

Umarım yardımcı olunur.

Veritabanın son halini ektedir.


Eklenti Dosyaları
.zip   vt.zip (Boyut: 358,91 KB / İndirilme: 52)



  Alıntı
Bu mesajı beğenenler:
#5
(17-06-2015, 23:46)@MSC demiş ki: Merhaba,
Üç tür saydırma yapıyor.
Birinci: Kadrolu (personel_kadro_kurum) hangi kurumda görnüyorsa orada sayıyor.
İkinci: Kadrolu aktif (personel_kadro_kurum=personel_calistigi) şeklide ise sayıyor
Üçüncü: Geçici görev (personel_kadro_kurum!=personel calistigi) şeklinde sayıyor.

Yalnız istisnalar var. Bunlarda Yan Dal Asistan ve Eğitim Görevlisi kısmı dolu ise.


Örnek olarak:
Kişi İç Hastalıkları Uzmanı ama Yan Dal Asistanı olarak da Nefrooji branşında asistan.
Bu kişiyi:
unvan_adi | branş adi | kadrolu | kadrolu_aktif |gecici_gorevli
Uzman Tabip | İç Hastalıkları | 1 | 0 | 0
Uzman Tabip | Nefroloji | 0 | 1 | 0

Kişi Uzman Tabip olarak Aile Hekimi iken vekaleten Eğitim Görevlisi olarak çalışmakta. Bu kişi de;
unvan_adi | branş adi | kadrolu | kadrolu_aktif |gecici_gorevli
Uzman Tabip | Aile Hekimliği | 1 | 0 | 0
Eğitim Görevlisi | Aile Hekimliği| 0 | 0 | 1

şeklinde sayılması gerekmekte.
Yukarida anlatilani tek soru icinde olusturmak zor olabilir. Personel tablosuna uc adet sutun eklenmesi ve dediginiz kosullara ait eklenen sutunlara deger atamasi ile ozet tablonun olusturulmasini ek'te ki VT yapmaya calistim.
.rar   db.rar (Boyut: 44,8 KB / İndirilme: 73)



  Alıntı
Bu mesajı beğenenler:
#6
Merhaba,

İlginiz ve alakanız için teşekkürler. Durumu müsait bir zamanda inceleyeceğim. Farklı bir yöntem uygulamışsınız ve böyle durumlarda bir çıkış noktası gibi duruyor.

İyi günler.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Acceste Liste Kutusundan Seçilen Veriyi Metin Kutusuna Gönderme Pasham 24 340 04-04-2024, 01:18
Son Mesaj: halily
  Birden Fazla Alandaki Veriyi Sorguda Alt Alta Birleştirme adnnfrm 3 172 18-11-2023, 19:54
Son Mesaj: dsezgin
  [SORGU] Textbox'taki Veriyi Dinamik Sorgulama NLas7 2 136 06-09-2023, 08:44
Son Mesaj: NLas7
access-sql-18 [VBA] Tabloda Bulunan Ekleri Toplu şekilde Dışarı çıkarmak BeyTor 2 132 01-05-2023, 19:16
Son Mesaj: BeyTor
access-sql-9 [RAPOR] Aynı Satırları Bir Kere Gösterip Saydırma oguzt 10 304 14-03-2023, 22:17
Son Mesaj: oguzt
  Formdaki Veriyi Rapora Aktaramadım ankaram 2 157 18-02-2023, 21:51
Son Mesaj: ankaram
  [FORM] Liste Kutusundaki Veriyi Mail Ile Göndermek husem 8 918 27-01-2023, 00:52
Son Mesaj: BeyTor
  [FORM] Iki Farklı Tablodaki Veriyi Yansıtma omergenc7 2 293 16-12-2022, 14:14
Son Mesaj: omergenc7

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi