PDA

View Full Version : مشکل این کویری چیه؟؟؟



خانم گل
جمعه 08 آذر 1392, 22:54 عصر
سلام. من میخوام از یه جدول اطلاعاتی رو داشته باشم که تاریخ ثبت شده تو اون جدول بین تاریخای یه جدول دیگه که select شرطی داره باشه. مثل کویری زیر:

SELECT tblExam.examID, tblExam.name, tblExam.date,
FROM tblExam
WHERE (tblExam.date BETWEEN
(SELECT dateFrom
FROM tblEducationYear AS tbl1
WHERE (eduYearID = @eduYearID)) AND
(SELECT dateTo
FROM tblEducationYear AS tbl2
WHERE (eduYearID = @eduYearID)))
اما متاسفانه وقتی تاریخای جدول tblEducationYear سال مشترکی با tblExam.date داره نشونشون میده حتی اگه تو ماههای متفاوتی باشن. بنظرتون دستوری که من نوشتم کجاش مشکل داره؟

fakhravari
جمعه 08 آذر 1392, 23:14 عصر
DECLARE @StartDate DATETIME = N'2011-04-01 13:51:17.000'
DECLARE @EndDate DATETIME = N'2011-04-03 13:51:17.000'

SELECT * FROM B_Topics
WHERE [Date]
BETWEEN @StartDate AND @EndDate

DECLARE @StartDate DATETIME = N'2011-04-01 13:51:17.000'
DECLARE @EndDate DATETIME = N'2011-04-03 13:51:17.000'



SELECT
*
FROM
B_Topics
WHERE
[Date] IN ( SELECT
[Date]
FROM
B_Topics
WHERE
[Date] BETWEEN @StartDate AND @EndDate )

محمد سلیم آبادی
جمعه 08 آذر 1392, 23:27 عصر
اما متاسفانه وقتی تاریخای جدول tblEducationYear سال مشترکی با tblExam.date داره نشونشون میده حتی اگه تو ماههای متفاوتی باشن. بنظرتون دستوری که من نوشتم کجاش مشکل داره؟
مشکلتون برام چندان قابل حس نیست. لازم بنظر میرسه یک نمونه داده از هر دو جدول قرار بدین تا مشکل بررسی بشه.

ضمنا نیاز به دو subquery به این شکل نیست. کوئری زیر را استفاده کنید:

SELECT t1.examID, t1.name, t1.date,
FROM tblExam t1
JOIN tblEducationYear t2
ON t1.[date] BETWEEN t2.dateForm AND t2.dateTo
AND t2.eduYearID = @eduYearID;