bahar_engineer
پنج شنبه 19 آذر 1388, 12:08 عصر
سلام
من دو تا جدول دارم : MyProducts و Details
MyProducts :
ProductID : کد محصول
salecounter : تعداد فروش رفته
Details:
ProductID : کد محصول
Quantity : تعداد خریداری شده
که در جدول details فیلد productid ممکنه توی چند سطر یکسان باشه یعنی این محصول رو چند نفر خریداری کردن و هر بار به تعداد quantity
حالا می خوام مجموع تعداد خرید هر محصول رو توی جدول details بدست بیارم (مثلا procductid 24 که محصول شماره 24 هست در سه ردیف از جدول و هر کدام به تعداد 1 عدد خریداری شده پس مجموع خرید محصول 24 می شه 3) و این مقدار رو توی فیلد salecounter از جدول MyProducts با همون Productid بریزم(در واقع باید این فیلد رو آپدیت کنم)
چطور دستور و بنویسم ؟
از inner join استفاده کردم اما خیلی پیچیده بود ... یه سری هم جدا اول مقدار مجموع رو بدست آوردم به ازای هر محصول و یه فیلد توی جدول details گذاشتم به اسم sumsale و مجموع رو توی اون ریختم ... و بعد اومدم اونو استخراج کنم و جدول myproducts رو آپدیت کنم ...
این کدها:
//sale counter
string at,sa,bb,kk;
OleDbConnection con = new OleDbConnection(@"provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath("shop.mdb"));
at = "SELECT sum(Quantity) As sumsale FROM Details Group By ProductID";
OleDbCommand cmm = new OleDbCommand(at, con);
con.Open();
cmm.ExecuteNonQuery();
con.Close();
//update database
bb = "SELECT MyProducts.salecounter,Details.sumsale FROM MyProducts Inner Join Details ON (MyProducts.ProductID = Details.ProductID)";
OleDbCommand cmup = new OleDbCommand(bb, con);
OleDbDataReader drup;
sa = "update MyProducts set salecounter='" + salecounter + "' where ProductID=" + Pid;
OleDbCommand cmdup = new OleDbCommand(sa, con);
con.Open();
drup = cmup.ExecuteReader();
if (drup.Read())
{
salecounter = int.Parse(drup["sumsale"].ToString());
Pid = int.Parse(drup["ProductID"].ToString());
cmdup.ExecuteNonQuery();
}
else
{
salecounter = 0;
cmdup.ExecuteNonQuery();
}
con.Close();
//
اما فکر نمی کنم این راه استاندارد باشه
گیج شدم لطفا کمک کنید
من دو تا جدول دارم : MyProducts و Details
MyProducts :
ProductID : کد محصول
salecounter : تعداد فروش رفته
Details:
ProductID : کد محصول
Quantity : تعداد خریداری شده
که در جدول details فیلد productid ممکنه توی چند سطر یکسان باشه یعنی این محصول رو چند نفر خریداری کردن و هر بار به تعداد quantity
حالا می خوام مجموع تعداد خرید هر محصول رو توی جدول details بدست بیارم (مثلا procductid 24 که محصول شماره 24 هست در سه ردیف از جدول و هر کدام به تعداد 1 عدد خریداری شده پس مجموع خرید محصول 24 می شه 3) و این مقدار رو توی فیلد salecounter از جدول MyProducts با همون Productid بریزم(در واقع باید این فیلد رو آپدیت کنم)
چطور دستور و بنویسم ؟
از inner join استفاده کردم اما خیلی پیچیده بود ... یه سری هم جدا اول مقدار مجموع رو بدست آوردم به ازای هر محصول و یه فیلد توی جدول details گذاشتم به اسم sumsale و مجموع رو توی اون ریختم ... و بعد اومدم اونو استخراج کنم و جدول myproducts رو آپدیت کنم ...
این کدها:
//sale counter
string at,sa,bb,kk;
OleDbConnection con = new OleDbConnection(@"provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath("shop.mdb"));
at = "SELECT sum(Quantity) As sumsale FROM Details Group By ProductID";
OleDbCommand cmm = new OleDbCommand(at, con);
con.Open();
cmm.ExecuteNonQuery();
con.Close();
//update database
bb = "SELECT MyProducts.salecounter,Details.sumsale FROM MyProducts Inner Join Details ON (MyProducts.ProductID = Details.ProductID)";
OleDbCommand cmup = new OleDbCommand(bb, con);
OleDbDataReader drup;
sa = "update MyProducts set salecounter='" + salecounter + "' where ProductID=" + Pid;
OleDbCommand cmdup = new OleDbCommand(sa, con);
con.Open();
drup = cmup.ExecuteReader();
if (drup.Read())
{
salecounter = int.Parse(drup["sumsale"].ToString());
Pid = int.Parse(drup["ProductID"].ToString());
cmdup.ExecuteNonQuery();
}
else
{
salecounter = 0;
cmdup.ExecuteNonQuery();
}
con.Close();
//
اما فکر نمی کنم این راه استاندارد باشه
گیج شدم لطفا کمک کنید