۱ arman najafi
توضیح یک کوئری
جامعه پی اچ پی ایجاد شده در ۱۴ خرداد ۱۴۰۲

سلام من نتونسم درست متوجه group by و join بشم میشه رو این مثال به من این دو مورد رو توضیح بدین؟

select customers.name,count(orders.customerID) as "tedad sefaresh"
from customers join orders on customers.customerID = orders.customerID 
GROUP BY coustomer.name
 order by tedad sefaresh DESC 

سلام،

زمانی که بخواهید اطلاعات چند جدول رو استفاده کنید از join استفاده میکنید تا اطلاعاتشون رو واکشی کنید.

برای مثال یک جدول customers داریم و جدول دیگری به اسم orders داریم که سفارشات هر مشتری داخلش ثبت شده.

حالا میخوایم اطلاعات مشتری‌ها رو همراه با سفارشاتشون واکشی کنیم پس نیاز داریم select ای به جدول customers و orders داشته باشیم.

اینجا از جوین استفاده میکنیم. در قسمت اول کوئری که مینویسیم تمام فیلدهایی که از دو جدول میخوایمو مینویسیم:

SELECT `customers`.`name`, COUNT(`orders`.`customerID`) AS "tedad sefaresh"

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

فیلد customerID در جدول orders کلیدخارجی هست(foreign key) به customerID جدول customers.(مرجع یا reference)

FROM `customers` JOIN `orders` ON `customers`.`customerID` = `orders`.`customerID`

دو ستون مرجع و کلید خارجی رو در قسمت ON مشخص کردیم.

برای اینکه GROUP BY رو متوجه بشید یکبار حذفش کنید و نتیجه رو میبینید همه رو در یک سطر نمایش داده ولی وقتی میخوای گوه بندی کنید و بخواید مثلا برای هر ایدی یک count نمایش بده از group by استفاده میکنید.


برای مطالعه ی جوین‌های مختلف در MYSQL این لینک رو میتونید مطالعه کنید.

بهترین پاسخ
محسن موحد ۱۵ خرداد ۱۴۰۲، ۲۱:۵۶