Sorgu

1 2 3 4 5
13/08/2021, 20:51

lemoncher2

(08/08/2021, 11:17)berduş yazdı: tablo2deki Kayit_1_ID,Kayit_2_ID,Kayit_3_ID..... alanları neden sayısal değil de metin türünde?
eğer sayısal olsaydı aşağıdaki gibi bir kod ile tablo1'e bağlanıp kullanılmamış kayıtlar da görülebilirdi
SELECT Tablo1.DENEME, Count(UnionX.Kayit_1_ID) AS Say
FROM Tablo1 LEFT JOIN (SELECT Tablo2.Kayit_1_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_2_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_3_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_4_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_5_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_6_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_7_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_8_ID
FROM Tablo2)  AS UnionX ON Tablo1.Kimlik = UnionX.Kayit_1_ID
GROUP BY Tablo1.DENEME, Tablo1.Kimlik
ORDER BY Tablo1.Kimlik;


Hocam tekrar bir soru daha sormak istedim.

Biz bu sorguyu hiç bozmadan ilave ederek Tablo1 den başka bir sütundaki Evet/Hayır seçenekli bir girdileri de saydırabilirmiyiz. Sadece True olanları sayması lazım. Birde bu sorguya koşul ekliyebilirmiyiz örneğin şu tarihten öncesini göstersin.

Örnek ekledim sizin yaptığınız çaışma üzerine Tablo2 de eklemeler yaptım bunlarla ilgili işlem yapmak istiyorum aslında

Secim1_1...... Secim1_8
secim2_1.......Secim2_8
Secim3_1.......Secim3_8
Secim4_1.......Secim_4_8

isimli olmak üzere 32 yeni alan Tablo2'e ekledim.  Yaptığınız sorguda Tablo1 deki ID lerin KAyıt_ID_1.....Kayıt_ID_8 de kaç tane olduğunu sayıyordu. KayıtSaySql isimli sorgunuzda Say Sütunu bu işlemin sonucuydu. Şimdi bu say sütunun yanına 4 sütun daha açıp (Secim grupları için) aynı işlemi tekrarlatabilirmiyiz. bu seçim gruplarına bakmadan önce ID lerin eşit  olup olmadığına bakıcak sanırım eşit değilse hiç saymayacak. çünkü eğer Tablo2 ıd alanı boşsa secim alanlarına zaten veri girilmemiş oluyor.
Tablo1.Kayıt_ID=Tablo2.Kayıt_ID_1 and Secim1_1=true gibi süregelen bir işlem yapılması gerekiyor sanırım.

Dosyayı ekleyemedim bu şekilde upload ettim
https://www.dosyaupload.com/cwR6/KayıtSay_hy.rar
13/08/2021, 23:43

berduş

aynı mantığı kullanmayı denediniz mi?
SELECT Tablo1.DENEME, Count(UnionX.Kayit_1_ID) AS Say, Count(UnionX.Secim1_1),Count(UnionX.Secim2_1),...
FROM Tablo1 LEFT JOIN (SELECT Tablo2.Kayit_1_ID, Secim1_1,Secim2_1...
FROM Tablo2
union all
SELECT Tablo2.Kayit_2_ID,Secim1_2
FROM Tablo2
union all
SELECT Tablo2.Kayit_3_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_4_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_5_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_6_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_7_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_8_ID
FROM Tablo2)  AS UnionX ON Tablo1.Kimlik = UnionX.Kayit_1_ID
GROUP BY Tablo1.DENEME, Tablo1.Kimlik
ORDER BY Tablo1.Kimlik;
13/08/2021, 23:45

lemoncher2

(13/08/2021, 23:43)berduş yazdı: aynı mantığı kullanmayı denediniz mi?
SELECT Tablo1.DENEME, Count(UnionX.Kayit_1_ID) AS Say, Count(UnionX.Secim1_1),  Count(UnionX.Secim2_1),....
FROM Tablo1 LEFT JOIN (SELECT Tablo2.Kayit_1_ID, Secim1_1,Secim2_1....
FROM Tablo2
union all
SELECT Tablo2.Kayit_2_ID,Secim1_2
FROM Tablo2
union all
SELECT Tablo2.Kayit_3_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_4_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_5_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_6_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_7_ID
FROM Tablo2
union all
SELECT Tablo2.Kayit_8_ID
FROM Tablo2)  AS UnionX ON Tablo1.Kimlik = UnionX.Kayit_1_ID
GROUP BY Tablo1.DENEME, Tablo1.Kimlik
ORDER BY Tablo1.Kimlik;

Evet denedim oluyor ancak kriter nasıl giricem having olarak mı girmem gerekiyor.
13/08/2021, 23:48

berduş

bahsettiğim gibi yaparsanız zaten hepsi aynı sorguda olur, yaptığınız sorgunun kodunu ekler misiniz?
13/08/2021, 23:49

lemoncher2

(13/08/2021, 23:48)berduş yazdı: bahsettiğim gibi yaparsanız zaten hepsi aynı sorguda olur, yaptığınız sorgunun kodunu ekler misiniz?

Evet ben yanıldım hepsi aynı sorguda oluyor ancak kriter ekleyemeiyorum. HAVING olarak mı eklemek gerekiyor GROUP ile ORDER arasına örneğin Secim1_1 = True ise saysın

Bir de şimdi dikkat ettim. aynı değerleri getiriyor. Sayma işlemini diğer alanlar için yamıyor ilk alan için yapıyor
14/08/2021, 00:41

lemoncher2

SELECT Tablo1.DENEME, Count(UnionX.Kayit_1_ID) AS Say, Count(UnionX.Secim1_1) AS Secim1, Count(UnionX.Secim2_1) AS Secim2, Count(UnionX.Secim3_1) AS Secim3, Count(UnionX.Secim4_1) AS Secim4
FROM Tablo1 LEFT JOIN (SELECT Tablo2.Kayit_1_ID, Secim1_1, Secim2_1, Secim3_1, Secim4_1
FROM Tablo2
union all
SELECT Tablo2.Kayit_2_ID, Secim1_2, Secim2_2, Secim3_2, Secim4_2
FROM Tablo2
union all
SELECT Tablo2.Kayit_3_ID, Secim1_3, Secim2_3, Secim3_3, Secim4_3
FROM Tablo2
union all
SELECT Tablo2.Kayit_4_ID, Secim1_4, Secim2_4, Secim3_4, Secim4_4
FROM Tablo2
union all
SELECT Tablo2.Kayit_5_ID, Secim1_5, Secim2_5, Secim3_5, Secim4_5
FROM Tablo2
union all
SELECT Tablo2.Kayit_6_ID, Secim1_6, Secim2_6, Secim3_6, Secim4_6
FROM Tablo2
union all
SELECT Tablo2.Kayit_7_ID, Secim1_7, Secim2_7, Secim3_7, Secim4_7
FROM Tablo2
union all
SELECT Tablo2.Kayit_8_ID, Secim1_8, Secim2_8, Secim3_8, Secim4_8
FROM Tablo2)  AS UnionX ON Tablo1.Kimlik = UnionX.Kayit_1_ID
GROUP BY Tablo1.DENEME, Tablo1.Kimlik
ORDER BY Tablo1.Kimlik;

Secim sütunları boş/dolu farketmeksizin değer yazıyor
1 2 3 4 5