The Debugging Diaries
88 subscribers
63 photos
47 videos
33 files
73 links
گوشه‌ای برای یادداشت و ثبت مطالب مربوط به پایتون، یادگیری عمیق و هوش و هر چی که مربوط به تکنولوژی باشه.
加入频道
یه عملگر جالب تو sql هست به نام Cross apply قبلش به مقدمه
توی Sql کلا for , loop اینا نه بهینه است نه استفاده میشه باید نگاه و دید مجموعه داشت اما عملگر Cross apply مثل حلقه تو در تو روی دو تا جدول می مونه
اگه دو تا جدول داشته باشی و روش for بزنی کل مقادیر موجود در دو جدول رو کنار هم میتونی چاپ کنی در بعضی موارد هم میتونی یه شرطی بذاری و همه مقادیر چاپ نکنی و برخی از موارد دلخواه چاپ کنی
حالا با این مقدمه بریم سراغ cross apply
فرض کنیم یه جدول داریم که مشتری مشخصاتشون داخلش ثبت میشه
و یه جدول داریم سفارشات مشتری درش نگه می داریم
حالا میخوایم 3 تا سفارش آخر هر مشتری جلوی مشخصات مشتری داشته باشیم
فرض کنیم با زبون برنامه نویسی این کار میخوایم کنیم
یه حلقه میزنیم روی جدول مشتریا تک به تک مشتریا رو میریم داخل جدول سفارشا پیدا کرده و سه تای آخر بر میگردونیم
با cross apply هم به شکل زیر میشه
SELECT 
c.CustomerID,
o.OrderID,
o.OrderDate,
o.TotalAmount
FROM
Customer c
CROSS APPLY
(
SELECT TOP 3
OrderID,
OrderDate,
TotalAmount
FROM
Orders o
WHERE
o.CustomerID = c.CustomerID
ORDER BY
o.OrderDate DESC
) o
ORDER BY
c.CustomerID, o.OrderDate DESC;

در اینجا هم مواردی که از جدول مشتری انتخاب میکنی مثل یه حلقه دونه به دونه به Select دوم میره و توی شرط سفارش هایی نشون بده که آیدی مشتری i است و سپس سه تای برتر شو رو با استفاده از top و order by برمیگردونه
#sql
#part_1