PDA

View Full Version : نحوه ثبت یک فیلد در بانک . که 3 تاش باید اینسرت شه و 1 کی هم update



RIG000
دوشنبه 12 اردیبهشت 1390, 22:26 عصر
سلام. دوستان ببینید من میخام که 4 مقدار رو ثبت کنم .
name , family ,num ,sumNum
خب حالا موضوع اینه که میخام مثلا یه بار رضا جمشیدی 10 10 ذخیره شه یه بار دیگه رضا جمشیدی 15 25 و به همین ترتیب یه نفر چندین بار ذخره میشه و لی فقط مقدار num تغییر میکنه . حالا نمیدونم اینطوری درسته یا نه .
اما مشکل من حالا اینکه مقدار sumnum باید تغییر کنه و جمع همه مقدار ها تو یه فیلد ذخیره شه یعنی یه جور update حالا موضوع اینکه با اینسرت نمیخام فیلد sumnum اینسر شه و update شه یعنی اولین بار insert شد هی رو اگه ما 3 مقدار name ,family ,num رو اضافه کردیم فیلد sumnum فقط update شه چون میخام واسه کریستال ریپورت بکشمش بیرون . نمیدونم الان میدونید میخام چیکار کنم یا نه . اگه دوستان کل کارمو فهمیدن بهم کمک کنن . ممنون میشم.:اشتباه::ناراحت:

FastCode
دوشنبه 12 اردیبهشت 1390, 23:08 عصر
سلام.
خیر اینطوری غلطه.
مراجعه شود به 1NF (http://en.wikipedia.org/wiki/First_normal_form) و 2NF (http://en.wikipedia.org/wiki/Second_normal_form) در ویکیپدیا (http://en.wikipedia.org/wiki/Database_normalization).
شکل پیشنهادی برای این کا بدین صورته:
جدول یک Person
int ID
char Name
char LastName

جدول دو Value:
int ID
int PersonID
int Value

جدول اول فقط یک سطر داره:
۱ رضا جمشیدی

و جدول دو دو سطر:
۱ ۱ ۱۰
۲ ۱ ۱۵
اینطوری میتونید در صورت تغییر اسم رضا جمشیدی این تغییر رو فقط یک بار ایجاد بکنید و از بروز خطا در صورت غلط املایی جلوگیری کنید.اتفاقات دیگه ای که میافته اینه که میتونید لیست افراد رو جدا داشته بایشد.با تکرار اسم افراد فضا اشغال نکنید و جمع رو هم ذخیره نکنید.
فکر کردید اگر یک سطر در بالای جدول ویرایش بشه باید چکار با ستون جمع بکنید؟

گزارش هم که میخواستید به این شکل در میاد:(@اونهایی که میگن چرا Join استفاده نکردی:خودش Optimize میشه)
Select ID, Name, LastName,
(Select Value from Value where Value.PersonID=Person.ID),
(Select Sum(select Value from Value where Value.PersonID = Person.ID and Value.ID < Value2.PersonID) from Value As Value2 where Value2.PersonID = Person.ID)
From Person
طبق معمول با text editor نوشتم.(معلوم نیست کار بکنه.ولی راهش همینه.)

RIG000
سه شنبه 13 اردیبهشت 1390, 02:18 صبح
ممنون .الان من چند تا سوال دارم
پس الان تو جدول 1 من id ,name,family و در جدول 2 id , personid,Value قرار میگره ؟ خب حالا سوال
1-. کد درج اطلاعات تو جدول اینجا چه شکلی میشه ؟ اگه بخام همه ی فیلد های بالا رو به دو جدول همزمان ارسال کنم؟

2 - من باید چه relation هایی اینجا بزنم ؟

3- کد updatesh و deletsh چه شکلی میشه؟ میشه کد های sql این Update,Delete,Insert رو برام بنویسید؟ ممنون

RIG000
سه شنبه 13 اردیبهشت 1390, 02:22 صبح
در ضمن این خ کد شما چه معنی داره متوجه کدتون نشدم !!!
من اینجوری نوشتم که فکر میکنم 100 در100 غلطه .

string strinsert1 = string.Format("insert into tb values({0},'{1}','{2}')",txtpkid.Text,
txtname.Text, txtfamily.Text);

string strinsert2= string.Format("insert into tb2 values({0},{})", txtpkid.Text,
txtnum.Text);
string str3 = strinsert1 + strinsert2;
ارور میده >>
Missing semicolon (;) at end of SQL statement.

بچه ها اینو حتما بهم کمک کنید. ممنون میشم

FastCode
سه شنبه 13 اردیبهشت 1390, 11:26 صبح
در ضمن این خ کد شما چه معنی داره متوجه کدتون نشدم !!!
من اینجوری نوشتم که فکر میکنم 100 در100 غلطه .

string strinsert1 = string.Format("insert into tb values({0},'{1}','{2}')",txtpkid.Text,
txtname.Text, txtfamily.Text);

string strinsert2= string.Format("insert into tb2 values({0},{})", txtpkid.Text,
txtnum.Text);
string str3 = strinsert1 + strinsert2;
ارور میده >>
Missing semicolon (;) at end of SQL statement.

بچه ها اینو حتما بهم کمک کنید. ممنون میشم

درسته.
۱۰۰٪ غلطه.

relation بین Person.ID و Value.PersonID هست.
برای درج ابتدا باید چک کنید که Perosn وجود داشته باشه.اگر نبود ثبت کنید.بعد کد Person یافته شده یا ثبت شده رو برای درج در جدول Value استفاده کنید.
برای حذف هم فقط از جدول Value حذف میکنید.
برای حذف از جدول Person چند گزینه دارید.
۱.دستی
۲.خودکار(وقتی تمام value های یک Perosn حذف شدند Person رو به شکل خودکار حذف کنید.)


خواهش میکنم یک بار راهنمای دستور های Insert و Update و Delete رو در MSDN بخونید.
و اون سه تا لینک رو انقدر بخونید تا توش هیچ ابهامی نباشه.(الکی که لینک نمیدم.حتماً مهمه)
بهتون قول میدم که دیگه هیچ ابهامی براتون نمونه.