Where şartında çoklu değer karşılaştırma

steinmetz

Asistan
Katılım
4 Mayıs 2008
Mesajlar
272
Reaksiyon puanı
6
Puanları
0
Arkadaşlar şu şekilde bir tablom var diyelim:
[TABLE="width: 925"]
[TR]
[TD]ID[/TD]
[TD]GRUP[/TD]
[TD]KOD[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]10[/TD]
[TD]R1[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]10[/TD]
[TD]R2[/TD]
[/TR]
[TR]
[TD]3[/TD]
[TD]10[/TD]
[TD]R3[/TD]
[/TR]
[TR]
[TD]4[/TD]
[TD]10[/TD]
[TD]R4[/TD]
[/TR]
[TR]
[TD]5[/TD]
[TD]11[/TD]
[TD]R5[/TD]
[/TR]
[TR]
[TD]6[/TD]
[TD]11[/TD]
[TD]R6[/TD]
[/TR]
[/TABLE]
Öyle bir SELECT sorgusu yazmak istiyorum ki örneğin WHERE kısmında KOD=(R1,R2,R3) yazınca bana GRUP olarak 10 değeri dönmeli fakat KOD=(R1,R8,R3) yazdığımda bana NULL dönmeli çünkü R8 in tabloda GRUP karşılığı bulunmuyor. Ben şu şekilde yazmaya çalıştım:

SELECT GRUP FROM TBL_KODLAR WHERE KOD IN('R1','R2','R3') GROUP BY GRUP bu sorguda istediğim gibi 10 değeri dönüyor fakat bu sorguda da
SELECT GRUP FROM TBL_KODLAR WHERE KOD IN('R1','R8','R3') GROUP BY GRUP bana 10 dönüyor ama tabloda R8 yok, bu mantığın yanlış olduğunu biliyorum. Sonuçta IN kayıtları OR işlemine göre filtreliyor. Bu duruma nasıl çözüm bulabilirim?
 

totleben

Asistan
Katılım
25 Mayıs 2007
Mesajlar
291
Reaksiyon puanı
0
Puanları
16
İkinci sorguna bir where daha ekleyip sorguladığın tüm kodların tablonda gerçekten olup olmadığını kontrol etmen gerekir.

Kod:
SELECT GRUP FROM TBL_KODLAR WHERE KOD IN('R1','R8','R3') 
and (select COUNT(*) from TBL_KODLAR where KOD in ('R1','R8','R3'))=3
GROUP BY GRUP

Ben sayıları 3 mü diye baktım eğer bu şekilde işini görmezse sen istediğin gibi kontrol yapabilirsin.
 
Üst