PDA

View Full Version : دستور select به همراه group by



project80888
چهارشنبه 26 بهمن 1390, 09:21 صبح
من یه جدولی دارم که داخل آن چهار تا فیلد دارم
نام کالا ---قیمت کالا----تعداد-----شرح کالا

نیاز به یه دستور select دارم تا
بر حسب نام کالا گرئه بندی بشه و تعداد هر کدام از آنها نشان یده مثلا
شامپو------12000------5--------ندارد
شمامپو-----6000-------3---------ندارد
-------------------------------------------------
خروجی به صورت زیر میخوام
شامپو------18000---8--------ندارد
البته جدول من حدود 20 تا فیلد داره که مابقی بین کالاهای هم نام مشترک هستد فقط تنها چیز متفاوت آونها تعداد اون کالا ها است

در واقع برای اینکه قابل فهم باشه صورت مسئله من به این صورته
که واسه یه فاکتور خرید که کاربر کالایی را با n عدد انتخاب میکنه و من به دلایلی مجبور n کالا شده را در جدولم در n سطر ذخیره کنم وتعداد انها را یک در نظر میگیرم
حالا میخوام در فرم برنام ام کد کالا مشخصات کالا و تعداد درخواستی برای کاربر نمایش بدم
لازم به ذکر است که برای هر کد کالا یی مشخصات یکشان است
پس من میخوام خروجی به این صورت باشه
کد کالا----ستون های مشخصات کالا(قیمت ، نوع و ...)----- تعداد درخواستی


ممنون

nedata
چهارشنبه 26 بهمن 1390, 10:15 صبح
Select KalaName,Sum(Price),Sum(Number),Comment From Kala group by KalaName,Comment

project80888
چهارشنبه 26 بهمن 1390, 10:40 صبح
SELECT tbl_Requestdetail.Rqdet_ID, tbl_Requestdetail.Rqdet_Rq_Code,
tbl_Requestdetail.Rq_Class_CID,sum( tbl_Requestdetail.Rq_Number)as sumkala,
tbl_material.mat_name,
tbl_Request.Rq_Date, tbl_Request.Rq_RqTyp_Code, tbl_Request.Rq_Desc,
tbl_class.c_sm_code, tbl_class.c_newLable, 1 AS chkSel
FROM tbl_class INNER JOIN
tbl_Requestdetail ON tbl_class.c_id = tbl_Requestdetail.Rq_Class_CID INNER JOIN
tbl_StateMat ON tbl_class.c_sm_code = tbl_StateMat.sm_code INNER JOIN
tbl_BilDetail ON tbl_class.C_Bdt_Id = tbl_BilDetail.Bdt_Id INNER JOIN
tbl_material ON tbl_BilDetail.BDt_Mat_code = tbl_material.mat_code INNER JOIN
tbl_Request ON tbl_Requestdetail.Rqdet_Rq_Code = tbl_Request.Rq_Code INNER JOIN
tbl_RequestType ON tbl_Request.Rq_RqTyp_Code = tbl_RequestType.ReqTyp_Code
GROUP BY tbl_Requestdetail.Rqdet_ID, tbl_Requestdetail.Rqdet_Rq_Code, tbl_Requestdetail.Rq_Class_CID, tbl_Requestdetail.Rq_Number,
tbl_material.mat_name, tbl_StateMat.sm_state, tbl_Request.Rq_Date, tbl_Request.Rq_RqTyp_Code, tbl_Request.Rq_Desc,
tbl_RequestType.ReqTyp_Title, tbl_class.c_sm_code, tbl_class.c_newLable

project80888
چهارشنبه 26 بهمن 1390, 10:49 صبح
نه جواب نداد
این قبلا امتحان کرده بودم
همه تعداد 1 نشون میده

nedata
چهارشنبه 26 بهمن 1390, 11:00 صبح
سلام
خوب شما فيلدهايي كه داخل group by مياريد باعث ميشه كه تعداد 1 بدهد.

tiphooo
چهارشنبه 26 بهمن 1390, 21:39 عصر
با اینکه از فیلدهاتون چیزی نمی شه فهمید ولی شاید این کد کمکتون کنه
SELECT P.*,Q.* FROM
(SELECT tbl_Requestdetail.Rqdet_ID, tbl_Requestdetail.Rqdet_Rq_Code,
tbl_Requestdetail.Rq_Class_CID,sum( tbl_Requestdetail.Rq_Number)as sumkala
GROUP BY tbl_Requestdetail.Rqdet_ID, tbl_Requestdetail.Rqdet_Rq_Code,
tbl_Requestdetail.Rq_Class_CID)P
LEFT OUTER JOIN
(
SELECT tbl_Requestdetail.Rqdet_ID, tbl_Requestdetail.Rqdet_Rq_Code,
tbl_Requestdetail.Rq_Class_CID,
tbl_material.mat_name,
tbl_Request.Rq_Date, tbl_Request.Rq_RqTyp_Code, tbl_Request.Rq_Desc,
tbl_class.c_sm_code, tbl_class.c_newLable, 1 AS chkSel
FROM tbl_class INNER JOIN
tbl_Requestdetail ON tbl_class.c_id = tbl_Requestdetail.Rq_Class_CID INNER JOIN
tbl_StateMat ON tbl_class.c_sm_code = tbl_StateMat.sm_code INNER JOIN
tbl_BilDetail ON tbl_class.C_Bdt_Id = tbl_BilDetail.Bdt_Id INNER JOIN
tbl_material ON tbl_BilDetail.BDt_Mat_code = tbl_material.mat_code INNER JOIN
tbl_Request ON tbl_Requestdetail.Rqdet_Rq_Code = tbl_Request.Rq_Code INNER JOIN
tbl_RequestType ON tbl_Request.Rq_RqTyp_Code = tbl_RequestType.ReqTyp_Code
)Q ON P.Rqdet_ID=Q.Rqdet_ID
AND P.Rqdet_Rq_Code=Q.Rqdet_Rq_Code
AND P.Rq_Class_CID=Q.Rq_Class_CID