می خواستم بدونم کسی می تونه در مورد موارد زیر در sql serverمن رو راهنمایی کنه؟
scalar
multi-valued
self-contained
correlated
اسکالر یعنی یک عدد (نتیجه)
مالتی ولیو یعنی چند عدد (نتیجه)
سلف کنتیند و کورلیتد هم یعنی دستورات تو در تو (مستقل(سلف کنتیند) و وابسته(کورلیتد ) ).
حالا اینها یعنی چی؟
------------
یک موقع هست شما یک فانکشن مینویسید تو SQL Server که فقط یه خروجی رو برگشت میده (مثل برنامه سی شارپ یا سی ++ دستوری مثل return x یا هرچی داره ) اینجا ما از نوع اسکالر استفاده میکنیم .(مثلا شماره دانشجویی آقای ایکس رو بده یا مثلا معدل آقای ایگرگ رو بده!)
یک موقع دیگه هست که شما یک فانکشن مینویسید که مجموعه ای از نتایج رو در بر داره یعنی نه فقط یه عدد یا رشته ! بلکه مجموعه ای از سطرها رو بعنوان نتیجه نیاز دارید ( مثلا لیست دانشجویانی که معدلشون زیر 12 شده ) .برای اینکار ما از مالتی ولیو استفاده میکنیم .و اینطور میتونیم تابعمون رو تو یه دستوری مثل :
select * from dbo.test_function(12)
استفاده کنیم .
self-contained کوئری هم به اون دسته از دستورات تو در تویی گفته میشه که دستور داخلی فقط یکبار اجرا میشه (برخلاف کوئری های بهم پیوسته که پایین توضیح میدم - که بهم وابسته هستند و به ازای هر بار اجرای دستورات بیرونی دستورات (سلکتها)ی درونی چندین بار اجرا میشن ) . ربطی به دستور بیرونی نداره . مثلا :
Select STID
From students
Where stID= (select STID from students where lastname = ‘Hasan Pour’);
این نوع دستورات هم میتونن خروجی یه عدد داشته باشن یا اینکه مجموعه از نتایج رو داشته باشن . مثلا مثال بالا فقط شماره دانشجویی یه نفر رو میداد(فرض کنیم فقط یه آقای حسن پور داریم ) . مثال پایین شماره دانشجویی چند نفر رو میده :
Select STID
From students
Where stID= (select STID from students where lastname Like ‘H%’);
کورلیتد هم یعنی وابسته . هر وقت شما Select های تو در تو داشته باشین میگن شما دستور بهم پیوسته ساختید یا اصطلاحا correlated sql statement ساختید . دقیقا مثل بالاست با این تفاوت که در اینجا دستور داخلی وابسته به دستور بیرونی هست و بر اساس مقداری که از دستور بیرونی میگیره کارش رو انجام میده.
مثلا :
SELECT employee_number, name
FROM employee AS e1
WHERE salary > (SELECT avg(salary)
FROM employee
WHERE department = e1.department);
علاقه مندی ها (Bookmarks)