PDA

View Full Version : روش کار کردن با 2تا Wirh همزمان



forodo
شنبه 06 اردیبهشت 1393, 20:07 عصر
سلام
من از کد زیر استفاده می کنم ارور می ده.
وقتی یکی از Withهارو انتخاب می کنم مشکلی نیست ولی وقتی هردوتاش را با هم انتخاب می کنم اروره زیر رو می ده:
with tblWith as
(
SELECT MAX(tblDaryafti.ID) AS DID, tblLetterVarede.ID AS dd
FROM tblLetterVarede INNER JOIN tblDaryafti
ON tblLetterVarede.ID = tblDaryafti.VaredeLetterID
WHERE tblDaryafti.IsControlProjectPeygiri = 1 AND Archived = 0 AND Suspend = 0 AND Acted = 0 AND IsFonosht=0
GROUP BY tblLetterVarede.ID
)
SELECT tblDaryafti.ID AS DID,tblLetterVarede.ID,tblLetterVarede.LetterID,Se nder
,Subject,tabaghe,ErjaDate,ErjaTime,
bazgasht,peyrov,IsVarede
FROM tblLetterVarede INNER JOIN tblDaryafti
ON tblLetterVarede.ID = tblDaryafti.VaredeLetterID INNER JOIN tblWith
ON tblDaryafti.ID = tblWith.DID



with tblWith1 as
(
SELECT MAX(tblDaryafti.ID) AS DID, tblErsali.ID AS dd
FROM tblErsali INNER JOIN tblDaryafti
ON tblErsali.ID = tblDaryafti.LetterID
WHERE tblDaryafti.IsControlProjectPeygiri = 1 AND Archived = 0 AND Suspend = 0 AND Acted = 0 AND IsFonosht=0
GROUP BY tblErsali.ID
)
SELECT tblDaryafti.ID AS DID,tblErsali.ID,tblErsali.LetterID,SenderUserName
,Subject,tabaghe,ErjaDate,ErjaTime,
bazgasht,peyrov,IsVarede
FROM tblErsali INNER JOIN tblDaryafti
ON tblErsali.ID = tblDaryafti.LetterID INNER JOIN tblWith1
ON tblDaryafti.ID = tblWith1.DID
ارور:
Msg 319, Level 15, State 1, Line 19
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

forodo
یک شنبه 07 اردیبهشت 1393, 16:46 عصر
فهمیدم:
with tblWith as
(
SELECT letterID, max(ID) as[id]
FROM tblLetterSadere
GROUP BY letterID
),
tblWith1 as
(
SELECT MAX(tblDaryafti.ID) AS DID, tblErsali.ID AS EID
FROM tblErsali INNER JOIN tblDaryafti
ON tblErsali.ID = tblDaryafti.LetterID
GROUP BY tblErsali.ID
)
برای دومی از کلمه With استفاده نمی کنیم و بعد از پرانتز بسته With اولی علامت " , " رو باید قرار داد. ولی اگر از چند جدول استفاده می کنیم باید حتماً اونهارو با UNION به یک جدول تبدیل کنیم وگرنه نمی توان از 2 تا With استفاده کرد.