PDA

View Full Version : دستور معادلی که در اس کیوال کار پرتو را انجام دهد



c#sajad
پنج شنبه 16 آبان 1392, 01:02 صبح
سلام علیکم
دستور معادلی که در اس کیوال کار پرتو را انجام دهد ؟

( پرتو مربوط به جبر رابطه ای در طراحی پایگاه های داده می باشد )

حمیدرضاصادقیان
پنج شنبه 16 آبان 1392, 20:07 عصر
سلام
دستور پرتو یا Project در Relational Algebra همون دستور Select در SQL Server هست که به شما این اجازه رو میده که ستونهای مورد نیاز رو در خروجی به کاربر نشان دهید نه تمامی ستونها را و این محدود کردن در شرط Where اعمال نمی شود.

محمد سلیم آبادی
دوشنبه 27 آبان 1392, 10:40 صبح
نکته ی جالبی که در اینجا مطرح هست اینه که در زبان Tutorial D که مختص آموزش هست و آقا کریستوفر Date در کتاب خودش استفاده نموده است این قابلیت را دارد که مثلا مشخص کنیم میخواهیم تمام ستون ها به غیر از یکی نمایش داده شود.
ممکنه بگید که این چه اهمیتی دارد. به همین دلیل مثالی تهیه کردم که اهمیت آن را در T-SQL بیان میکند:

فرض کنید به ازای هر مشتری میخواهید سه سفارش آخر را بدست آورید خب روش مناسب به این صورت است:

SELECT *
FROM
(
SELECT ROW_NUMBER() OVER(PARITION BY CustomerID ORDER BY OrderDate) AS rnk, *
FROM table_name
) AS D
WHERE rnk <= 3;

اگر به خروجی توجه کنید خواهید دید که یک ستون ناخواسته بنام rnk به نتیجه اضافه شده است که شما مایل نیستید آن در خروجی ظاهر شود.
در نتیجه، ناچارا باید صراحتا تمام ستون های جدول به غیر از اون ستون را لیست کنید به جای استفاده از کاراکتر *

در حالی که اگر Syntax زیر در T-SQL حمایت می شد مشکل ما نیز حل بود:

SELECT all columns except rnk FROM ...