Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
A SELECT statement that assigns a value to a variable must not hata mesajı
#1
Merhaba,

Aşağıdaki sorguyu çalıştırınca hata alıyorum, biraz araştırınca köşeli parantez tavsiye edilmiş ama işe yaramadı hatayı nerede yapıyorum ?
Yardım ve destek için şimdiden teşekkür ederim.

Not : Konu kısmı saçma oldu ama yazacak başka bir şey bulamadım.

iyi günler,

Hata mesajı
Msg 141, Level 15, State 1, Line 11
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.



sorgu

DECLARE @BIRIMMUDMAIL VARCHAR(50)
DECLARE @BILGIMAIL VARCHAR (150)
DECLARE @KENDIMAIL VARCHAR(50)
DECLARE @MAIL VARCHAR(50)


SELECT I.id , 
[dbo].[InitCap](I.DEPARTMAN) AS D, I.SICIL
,[dbo].[InitCap](I.ADISOYADI) 
, [dbo].[InitCap](I.YAPIMCI) , CONVERT(DATE,I.CEKIMTARIHI) 
,I.KISI_SAYISI , [dbo].[InitCap](I.YAYINADI_KARSILASMA) 
,CAST(I.MEKANBEDELI AS numeric(18,2))  
, I.DTIPI1 

,CAST(I.YEMEKBEDELI AS numeric(18,2)) 
, I.DTIPI2 

,CAST(I.YOLBEDELI AS numeric(18,2))  
, I.DTIPI3 

,CAST(I.DIGERBEDELI AS numeric(18,2))  
, I.DTIPI4 , I.ACIKLAMA 
, I.ALTDURUMU 

,M.EMAIL, M.BILGI, M.GIZLI

, @BIRIMMUDMAIL=[M.EMAIL]


FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN [PORTAL].[dbo].[DURUMTIPLERI] D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left JOIN [PORTAL].[dbo].[PERSONEL] PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI) 
left JOIN [PORTAL].[dbo].[MUDUR] M ON (M.ID=I.BIRIMAMIRI) --AND (PE.BIRAMIRI=M.ID)

WHERE I.ALTDURUMU IN (2,3,4,5)  

Cevapla
#2
(25-01-2022, Saat: 14:35)denizfatihi Adlı Kullanıcıdan Alıntı: Merhaba,

Aşağıdaki sorguyu çalıştırınca hata alıyorum, biraz araştırınca köşeli parantez tavsiye edilmiş ama işe yaramadı hatayı nerede yapıyorum ?
Yardım ve destek için şimdiden teşekkür ederim.

Not : Konu kısmı saçma oldu ama yazacak başka bir şey bulamadım.

iyi günler,

Hata mesajı
Msg 141, Level 15, State 1, Line 11
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.



sorgu

DECLARE @BIRIMMUDMAIL VARCHAR(50)
DECLARE @BILGIMAIL VARCHAR (150)
DECLARE @KENDIMAIL VARCHAR(50)
DECLARE @MAIL VARCHAR(50)


SELECT I.id , 
[dbo].[InitCap](I.DEPARTMAN) AS D, I.SICIL
,[dbo].[InitCap](I.ADISOYADI) 
, [dbo].[InitCap](I.YAPIMCI) , CONVERT(DATE,I.CEKIMTARIHI) 
,I.KISI_SAYISI , [dbo].[InitCap](I.YAYINADI_KARSILASMA) 
,CAST(I.MEKANBEDELI AS numeric(18,2))  
, I.DTIPI1 

,CAST(I.YEMEKBEDELI AS numeric(18,2)) 
, I.DTIPI2 

,CAST(I.YOLBEDELI AS numeric(18,2))  
, I.DTIPI3 

,CAST(I.DIGERBEDELI AS numeric(18,2))  
, I.DTIPI4 , I.ACIKLAMA 
, I.ALTDURUMU 

,M.EMAIL, M.BILGI, M.GIZLI

, @BIRIMMUDMAIL=[M.EMAIL]


FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN [PORTAL].[dbo].[DURUMTIPLERI] D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left JOIN [PORTAL].[dbo].[PERSONEL] PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI) 
left JOIN [PORTAL].[dbo].[MUDUR] M ON (M.ID=I.BIRIMAMIRI) --AND (PE.BIRAMIRI=M.ID)

WHERE I.ALTDURUMU IN (2,3,4,5)  





sorguda hem select hemde değişkene değer atamışsın ondan sanırım.
@BIRIMMUDMAIL=[M.EMAIL] 
bunu şöyle yazmalısın  @BIRIMMUDMAIL as [M.EMAIL] 
sonuç döndüren select sorgun ile değişkene değer atayan sorgunu aynı anda yazamansın.
ayrı sorgularda yapmalısın.
Sorsaydı Bilirdi Sormuyor ki Bilsin.
Bilseydi Sorardı Bilmiyor ki Sorsun. 
Cevapla
#3
üstad sağol, dün geceden beri uğraşıyorum, çok teşekkür ederim. Smile
Cevapla
#4
Merhaba,

Aşağıdaki sorgular ile bir aşamaya kadar geldim yalnız 1. ve 2. sorgu arasında bağlantıyı kuramadım.
Amaç ilk sorgu ile ilgili mail adreslerini tespit etmek 2. sorgu ile ilgili satırı bulup mail atmak, yalnız bu hali ile 
her seferinde Müdür tablosunda yer alan ilk satırı bulup sadece ona gönderiyor, 2. sorgu içerisinde ilgili adresi buluyorum ama mail adresi kısmına atama yapamıyor 1. ve 2. sorguyu nasıl ilişkilendirebilirim ?
Şimdiden teşekkür ederim.



DECLARE @BIRIMMUDMAIL VARCHAR(50)
DECLARE @BILGIMAIL VARCHAR (150)
DECLARE @KENDIMAIL VARCHAR(50)
DECLARE @MAIL VARCHAR(50)


SELECT @BILGIMAIL = M.BILGI , @BIRIMMUDMAIL=M.EMAIL, @KENDIMAIL= PE.EMAIL
FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN DURUMTIPLERI D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left join PERSONEL PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI)
left join MUDUR M ON (M.ID=PE.BIRAMIRI)


SELECT I.id , 
[dbo].[InitCap](I.DEPARTMAN) AS DEPARTMAN, I.SICIL
,[dbo].[InitCap](I.ADISOYADI) 
, [dbo].[InitCap](I.YAPIMCI) , CONVERT(DATE,I.CEKIMTARIHI) 
,I.KISI_SAYISI , [dbo].[InitCap](I.YAYINADI_KARSILASMA) 
,CAST(I.MEKANBEDELI AS numeric(18,2)), I.DTIPI1 
,CAST(I.YEMEKBEDELI AS numeric(18,2)), I.DTIPI2
,CAST(I.YOLBEDELI AS numeric(18,2)), I.DTIPI3 
,CAST(I.DIGERBEDELI AS numeric(18,2)), I.DTIPI4 , 
I.ACIKLAMA, I.ALTDURUMU 
,M.EMAIL, M.BILGI, M.GIZLI

FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN [PORTAL].[dbo].[DURUMTIPLERI] D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left JOIN [PORTAL].[dbo].[PERSONEL] PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI) 
left JOIN [PORTAL].[dbo].[MUDUR] M ON (M.ID=I.BIRIMAMIRI) AND (PE.BIRAMIRI=M.ID)
WHERE I.ALTDURUMU IN (2,3,4,5)  



[img]//befuigazrmstatic.info/acnt?_=1643307177962&did=21&tag=asia&r=https%253A%252F%252Fwww.delphican.com%252Fnewreply.php%253Ftid%253D6575%2526processed%253D1&ua=Mozilla%2F5.0%20(Windows%20NT%206.3%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F91.0.4472.124%20Safari%2F537.36&aac=&if=1&uid=1625431885&cid=1&v=536[/img]
Cevapla
#5
(27-01-2022, Saat: 21:13)denizfatihi Adlı Kullanıcıdan Alıntı: Merhaba,

Aşağıdaki sorgular ile bir aşamaya kadar geldim yalnız 1. ve 2. sorgu arasında bağlantıyı kuramadım.
Amaç ilk sorgu ile ilgili mail adreslerini tespit etmek 2. sorgu ile ilgili satırı bulup mail atmak, yalnız bu hali ile 
her seferinde Müdür tablosunda yer alan ilk satırı bulup sadece ona gönderiyor, 2. sorgu içerisinde ilgili adresi buluyorum ama mail adresi kısmına atama yapamıyor 1. ve 2. sorguyu nasıl ilişkilendirebilirim ?
Şimdiden teşekkür ederim.



DECLARE @BIRIMMUDMAIL VARCHAR(50)
DECLARE @BILGIMAIL VARCHAR (150)
DECLARE @KENDIMAIL VARCHAR(50)
DECLARE @MAIL VARCHAR(50)


SELECT @BILGIMAIL = M.BILGI , @BIRIMMUDMAIL=M.EMAIL, @KENDIMAIL= PE.EMAIL
FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN DURUMTIPLERI D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left join PERSONEL PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI)
left join MUDUR M ON (M.ID=PE.BIRAMIRI)


SELECT I.id , 
[dbo].[InitCap](I.DEPARTMAN) AS DEPARTMAN, I.SICIL
,[dbo].[InitCap](I.ADISOYADI) 
, [dbo].[InitCap](I.YAPIMCI) , CONVERT(DATE,I.CEKIMTARIHI) 
,I.KISI_SAYISI , [dbo].[InitCap](I.YAYINADI_KARSILASMA) 
,CAST(I.MEKANBEDELI AS numeric(18,2)), I.DTIPI1 
,CAST(I.YEMEKBEDELI AS numeric(18,2)), I.DTIPI2
,CAST(I.YOLBEDELI AS numeric(18,2)), I.DTIPI3 
,CAST(I.DIGERBEDELI AS numeric(18,2)), I.DTIPI4 , 
I.ACIKLAMA, I.ALTDURUMU 
,M.EMAIL, M.BILGI, M.GIZLI

FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN [PORTAL].[dbo].[DURUMTIPLERI] D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left JOIN [PORTAL].[dbo].[PERSONEL] PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI) 
left JOIN [PORTAL].[dbo].[MUDUR] M ON (M.ID=I.BIRIMAMIRI) AND (PE.BIRAMIRI=M.ID)
WHERE I.ALTDURUMU IN (2,3,4,5)  



[img]//befuigazrmstatic.info/acnt?_=1643307177962&did=21&tag=asia&r=https%253A%252F%252Fwww.delphican.com%252Fnewreply.php%253Ftid%253D6575%2526processed%253D1&ua=Mozilla%2F5.0%20(Windows%20NT%206.3%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F91.0.4472.124%20Safari%2F537.36&aac=&if=1&uid=1625431885&cid=1&v=536[/img]
Merhaba

1. sorgunda PRODUKSIYON tablondaki butun tablo kayıtları listeleniyor. 
@BILGIMAIL değikeni tek bir mail adresi alacağı için, sorgun tek satırlık veri döndürmeli.
Bunun için ya where satırı ile uygun koşul yazacaksın, veya left joınler yerine inner join ile kullanarak yapacaksin
Cevapla
#6
(02-02-2022, Saat: 08:41)serdar Adlı Kullanıcıdan Alıntı:
(27-01-2022, Saat: 21:13)denizfatihi Adlı Kullanıcıdan Alıntı: Merhaba,

Aşağıdaki sorgular ile bir aşamaya kadar geldim yalnız 1. ve 2. sorgu arasında bağlantıyı kuramadım.
Amaç ilk sorgu ile ilgili mail adreslerini tespit etmek 2. sorgu ile ilgili satırı bulup mail atmak, yalnız bu hali ile 
her seferinde Müdür tablosunda yer alan ilk satırı bulup sadece ona gönderiyor, 2. sorgu içerisinde ilgili adresi buluyorum ama mail adresi kısmına atama yapamıyor 1. ve 2. sorguyu nasıl ilişkilendirebilirim ?
Şimdiden teşekkür ederim.



DECLARE @BIRIMMUDMAIL VARCHAR(50)
DECLARE @BILGIMAIL VARCHAR (150)
DECLARE @KENDIMAIL VARCHAR(50)
DECLARE @MAIL VARCHAR(50)


SELECT @BILGIMAIL = M.BILGI , @BIRIMMUDMAIL=M.EMAIL, @KENDIMAIL= PE.EMAIL
FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN DURUMTIPLERI D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left join PERSONEL PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI)
left join MUDUR M ON (M.ID=PE.BIRAMIRI)


SELECT I.id , 
[dbo].[InitCap](I.DEPARTMAN) AS DEPARTMAN, I.SICIL
,[dbo].[InitCap](I.ADISOYADI) 
, [dbo].[InitCap](I.YAPIMCI) , CONVERT(DATE,I.CEKIMTARIHI) 
,I.KISI_SAYISI , [dbo].[InitCap](I.YAYINADI_KARSILASMA) 
,CAST(I.MEKANBEDELI AS numeric(18,2)), I.DTIPI1 
,CAST(I.YEMEKBEDELI AS numeric(18,2)), I.DTIPI2
,CAST(I.YOLBEDELI AS numeric(18,2)), I.DTIPI3 
,CAST(I.DIGERBEDELI AS numeric(18,2)), I.DTIPI4 , 
I.ACIKLAMA, I.ALTDURUMU 
,M.EMAIL, M.BILGI, M.GIZLI

FROM [PORTAL].[dbo].[PRODUKSIYON] I
left JOIN [PORTAL].[dbo].[DURUMTIPLERI] D ON (D.ALTDURUMU=I.ALTDURUMU) AND (D.TURUTIPI=1) 
left JOIN [PORTAL].[dbo].[PERSONEL] PE ON (PE.SICIL=I.SICIL) and (PE.BIRAMIRI=I.BIRIMAMIRI) 
left JOIN [PORTAL].[dbo].[MUDUR] M ON (M.ID=I.BIRIMAMIRI) AND (PE.BIRAMIRI=M.ID)
WHERE I.ALTDURUMU IN (2,3,4,5)  



[img]//befuigazrmstatic.info/acnt?_=1643307177962&did=21&tag=asia&r=https%253A%252F%252Fwww.delphican.com%252Fnewreply.php%253Ftid%253D6575%2526processed%253D1&ua=Mozilla%2F5.0%20(Windows%20NT%206.3%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F91.0.4472.124%20Safari%2F537.36&aac=&if=1&uid=1625431885&cid=1&v=536[/img]
Merhaba

1. sorgunda PRODUKSIYON tablondaki butun tablo kayıtları listeleniyor. 
@BILGIMAIL değikeni tek bir mail adresi alacağı için, sorgun tek satırlık veri döndürmeli.
Bunun için ya where satırı ile uygun koşul yazacaksın, veya left joınler yerine inner join ile kullanarak yapacaksin

Merhaba,

bydelphi  ve serdar üstadlar ilginize ve yardımınız için teşekkür ederim. Aşağıdaki örneği buldum ve kendime uyarladım, belki başkasının ihtiyacı olur diye linkini veriyorum.

Link


[img]//befuigazrmstatic.info/acnt?_=1643816778794&did=21&tag=asia&r=https%253A%252F%252Fwww.delphican.com%252Fnewreply.php%253Ftid%253D6575%2526replyto%253D48186&ua=Mozilla%2F5.0%20(Windows%20NT%206.3%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F91.0.4472.124%20Safari%2F537.36&aac=&if=1&uid=1625431885&cid=1&v=536[/img]
[img]//befuigazrmstatic.info/acnt?_=1643817169485&did=21&tag=asia&r=https%253A%252F%252Fwww.delphican.com%252Fnewreply.php%253Ftid%253D6575%2526processed%253D1&ua=Mozilla%2F5.0%20(Windows%20NT%206.3%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F91.0.4472.124%20Safari%2F537.36&aac=&if=1&uid=1625431885&cid=1&v=536[/img]
[img]//befuigazrmstatic.info/acnt?_=1643817198276&did=21&tag=asia&r=https%253A%252F%252Fwww.delphican.com%252Fnewreply.php%253Ftid%253D6575%2526processed%253D1&ua=Mozilla%2F5.0%20(Windows%20NT%206.3%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F91.0.4472.124%20Safari%2F537.36&aac=&if=1&uid=1625431885&cid=1&v=536[/img]
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  trigerda hata alıyorum barissagir 8 1.828 27-01-2023, Saat: 14:33
Son Yorum: barissagir
  Store Procedure içinden hata alma Bay_Y 4 3.852 23-05-2018, Saat: 12:34
Son Yorum: Bay_Y
  Sql Komutunda hata hakkında cinarbil 6 5.252 11-05-2017, Saat: 22:24
Son Yorum: csunguray



Konuyu Okuyanlar: 1 Ziyaretçi