ورود

View Full Version : سوال: اجرای دستور Select



behiunforgiven
شنبه 22 خرداد 1389, 11:11 صبح
سلام دوستان

من با این کد یه دستور Select نوشتم که به من چند تا ID رو بر می گردونه



SELECT DISTINCT TankNumber AS TnkNo, MAX(ID) AS Expr1
FROM TEvens
WHERE (DateAndTime = '6/12/2010 ')
GROUP BY TankNumber


حالا می خوام تمام مشخصات ردیف هایی که دارای این ID ها هستند رو بر گردونم.

نمی دونم باید چیکار کنم.

با استفاده از Extists و Select تو در تو امتحان کردم نشد.

carnation_heart
شنبه 22 خرداد 1389, 11:20 صبح
select TEvens.*
from TEvens,(
SELECT DISTINCT TankNumber AS TnkNo, MAX(ID) AS Expr1
FROM TEvens
WHERE (DateAndTime = '6/12/2010 ')
GROUP BY TankNumber)q1
where TEvens.id=q1.Expr1

behiunforgiven
شنبه 22 خرداد 1389, 11:45 صبح
فقط زدن دکمه تشکر کافی نبود.

یه دنیا تشکر دوست گرامی.

محمد سلیم آبادی
شنبه 22 خرداد 1389, 12:07 عصر
اگر ستون ID در جدول پرایمری و منحصر بفرد هست روش معرفی شده درست عمل می کنه در غیر این صورت نیاز دارین در شرط اتصال ترکیبی عمل کنید. در ضمن نیازی به DISTINCT در جلوی SELECT وجود نداره.
و اگر از SQL Server 2005 استفاده می کنید بهترین راه حل استفاده از ROW_NUMBER هست که از این مقاله می توانید با آن آشنا شوید:
http://www.30sharp.com/ShowArticle.aspx?nid=13&did=210&AuthorID=11

mariaviolla
شنبه 22 خرداد 1389, 21:01 عصر
اگر ستون ID در جدول پرایمری و منحصر بفرد هست روش معرفی شده درست عمل می کنه در غیر این صورت نیاز دارین در شرط اتصال ترکیبی عمل کنید. در ضمن نیازی به DISTINCT در جلوی SELECT وجود نداره.
و اگر از SQL Server 2005 استفاده می کنید بهترین راه حل استفاده از ROW_NUMBER هست که از این مقاله می توانید با آن آشنا شوید:
http://www.30sharp.com/ShowArticle.aspx?nid=13&did=210&AuthorID=11


SELECT *
FROM (SELECT *,
ROW_NUMBER() OVER(PARTITION BY Customerid
ORDER BY orderdate DESC) AS RecID
FROM Orders) D
WHERE RecID <= 3

می شه دقیقا این Row_number رو توضیح بدید که تو این خط چه میکنه ممنون منتظرم ;

محمد سلیم آبادی
یک شنبه 23 خرداد 1389, 12:45 عصر
می شه دقیقا این Row_number رو توضیح بدید که تو این خط چه میکنه ممنون منتظرم ;

این تابع به طور کلی شماره های متوالی به نتیجه ی کوئری بر اساس ترتیب مقدار یک ستون می دهد.
پیشنهاد می کنم به قسمت مربوطه در این ترفند رجوع کنید
http://www.30sharp.com/ShowArticle.aspx?nid=13&did=195&AuthorID=11