جمع کردن ستون در JOIN

پرسیده شده
فعالیت 1021 روز پیش
دیده شده 421 بار
0

عرض سلام و ادب

تو سایت W۳SCHOOL میخواستم دوتا جدولی که JOIN کردم، همراه با تمام مشخصات سفارش، در ستون Quantity به جای اینکه تعداد هر محصول در هر سفارش در یک سطر جداگانه نشان داده بشه، مجموع تعداد محصولات یک سفارش یکجا در یک سطر نشون داده بشه.از کوئری زیر استفاده کردم ولی فکر می کنم اصولی نیست و باید روش بهتر و خلاصه تری داشته باشه، ممنون میشم کمک کنید.

کوئری من:

SELECT
OrderDetails.OrderDetailID,
OrderDetails.OrderID,
Orders.CustomerID,
Orders.EmployeeID,
Orders.OrderDate,
Orders.ShipperID,
SUM(Quantity) AS Total_quantity_in_each_order
FROM OrderDetails JOIN Orders
ON OrderDetails.OrderID = Orders.OrderID
GROUP BY Orders.OrderID;

 

فایل پیوست

0
حذف شده

سلام و احترام

کوئریتون درسته، شاید شلوغیش به خاطر فیلدهایی که select کردید و گرنه کوئری داره درست کار میکنه

فایل پیوست

امیر صالحی

توسط

امیر صالحی

24 تیر 00

حذف شده
ممنون بابت پاسختون، ولی من هدفم اینه که تمام ستون ها با یک * ستاره نشون داده بشه، فقط به جای ستون Quantity که تعداد هر محصول در هر سفارش رو نشون میده، مجموع تعداد کالا در هر سفارش در یک سطر نشون داده بشه، آیا راهی داره این مورد؟
1
حذف شده
SELECT *, SUM(OrderDetails.Quantity) AS Total_quantity_in_each_order
FROM OrderDetails 
JOIN Orders ON OrderDetails.OrderID = Orders.OrderID
GROUP BY Orders.OrderID;
فایل پیوست

امیر صالحی

توسط

امیر صالحی

24 تیر 00

حذف شده
با این روش یک ستون Quantity و یک ستون Total داریم که هر کدوم یک مقدار جداگونه نمایش میدن، هدف من اینه که به جای ستون Quantity، ستون Total نمایش داده بشه، این روشی که خودم رفتم هم میشه،ولی احساس میکنم اصولی و خلاصه نیست
حذف شده
خب میتونید select هارو به جای * انجام بدید غیر Quantity و اسمی ازش نیارید تا نمایش داده نشه، کوئری کمکی بهتون کرد؟
امیر صالحی

24 تیر 00

حذف شده
خب باز میشه همینی که خودم نوشتم، احساس میکنم روش خلاصه تری باید باشه.
1
حذف شده

آقای صالحی تو استک اورفلو سوالمو مطرح کردم این جواب رو دادن، کار هم میکنه

SELECT o.*,
       SUM(od.Quantity) AS Total_quantity_in_each_order
FROM Orders o JOIN
     OrderDetails od
     ON od.OrderID = o.OrderID
GROUP BY o.OrderID;

فقط یه چیزی که داخل این کد متوجه نمیشم اینه که منظور از *.o و od.OrderID = o.OrderID چیه؟

متن کامل جوابه هم اینجاست

فایل پیوست

پویا پارسایی

توسط

پویا پارسایی

24 تیر 00

حذف شده
این دقیقا همون کوئریه که ما زدیم، اگه یه خورده پایین تر نگاه کنید توی from زده Orders o که ما میتونیم در ادامه کد با o کار کنیم به جای Orders یه جورایی اومده بهش اسم نسبت داده، حالا o.* میشه تمام فیلدهای Orders. این هم od.OrderID = o.OrderID که دقیقا همین OrderDetails.OrderID = Orders.OrderID فرقی نمیکنه
امیر صالحی

24 تیر 00