برگزیده های پرشین تولز

Help me about SQL

hkiani

کاربر تازه وارد
تاریخ عضویت
18 آگوست 2004
نوشته‌ها
21
لایک‌ها
0
محل سکونت
Khorasan, Iran
يك سوال در مورد زبان اسكوئل
من در سي بيلدر يك جدول اطلاعاتي دارم كه داراي دو فيلد عددي مثلا به نامهاي ورودي و خروجي يك حساب بانكي ميباشد. مي خواهم در هر ركورد مقدار موجودي را داشته باشم. (حالا يا در يك فيلد به نام موجودي ذخيره شود و يا بدون فيلد مورد استفاده قرار بگيرد). با كد نويسي اين محاسبه خيلي وقت مي گيرد. آيا مي توان با دستورات اسكوئل اين كار را با سرعت بيشتري انجام داد؟
لطفا كمك كنيد متشكرم
 

Mavis

کاربر تازه وارد
تاریخ عضویت
3 مارس 2004
نوشته‌ها
19
لایک‌ها
0
سن
41
محل سکونت
Tabriz
سلام
شما ميتوانيد مقدار موجودي را در هنگام نمايش توسط دستورات SQL محاسبه و نمايش دهيد كه در اين صورت بازدهي خيلي بالايي هم خواهد داشت. براي كمك بيشتر ساختار جداول خود را برايم بگوييد.
[email protected]
 

hkiani

کاربر تازه وارد
تاریخ عضویت
18 آگوست 2004
نوشته‌ها
21
لایک‌ها
0
محل سکونت
Khorasan, Iran
سلام و با تشكر از پاسخ شما
ساختار جدول اطلاعاتي من را به اين صورت در نظر بگيريد: جدول HsbInOut كه داراي دو فيلد عددي است به نام‌هاي input و output. در هر ركورد يكي از اين دو صفر هستند (يعني يا پول واريز مي‌شود و يا برداشت مي‌شود) و ديگري عددي بزرگتر از صفر است. البته از نقطه نظر برنامه اين مساله چندان اهميت ندارد.
موجودي مورد نظر من براي هر ركورد دقيقا به اين صورت است كه در همان ركورد مقدار input منهاي مقدار output بشود سپس با موجودي ركورد قبلي جمع گردد. مشكل من هم در همين قسمت دوم است كه بايد با موجودي ركورد قبلي جمع گردد والا قسمت اول را بلدم.
اگر بخواهم سوالم را باز هم ساده‌تر بيان كنم بايد بگويم چطور مي‌توان در يك جدول اطلاعاتي كه داراي يك فيلد عددي است براي هر ركورد مجموع مقادير قبلي اين فيلد را (با احتساب خود آن ركورد) بدست آورد. مثلا فرض كنيد فيلد عددي ما number باشد و در ركورد اول مقدار آن 10 و در ركورد دوم 30 و در ركورد سوم مقدار آن 50 باشد. من مي‌خواهم براي ركورد اول مقدار 10 + 0 (چون ركورد قبلي نداشته با صفر جمع شده است) و براي ركورد دوم مقدار 10+30 يعني 40 و براي ركورد سوم 10 + 30 + 50 يعني 90 براي من محاسبه شود.
محاسبه‌ي كل مقادير يك فيلد عددي را بلدم (در كل جدول) ولي به صورت فوق كه مانند يك انباشتگر مجموع مقادير را براي هر ركورد محاسبه كند بلد نيستم. ببخشيد كه خيلي طولاني شد.
 

Mavis

کاربر تازه وارد
تاریخ عضویت
3 مارس 2004
نوشته‌ها
19
لایک‌ها
0
سن
41
محل سکونت
Tabriz
سلام دوست عزيز
من در زير دستور كلي تابع SUM را نوشته ام كه برايت شرح ميدم.
[o] SELECT SUM (expression ) [o]
[o] FROM tables [o]
[o] WHERE predicates; [o]
در سطر اول بجاي expression نام فيلد خود را خواهي نوشت. يعني همون فيلدي كه ميخواي جمع اونو محاسبه كني. بعد در سطر دوم بجاي tables نام جدول خودت را بنويس و در سطر سوم بجاي predicates شرط خود را بنويس. مثلا output > 0 تا فقط مقادير بزرگتر از صفر رو محاسبه كنه. البته اگه اين سطر رو ننويسي هم تو برنامه شما فرقي نميكنه.
البته علايم [o] فقط بخاطر درست افتادن حروف انگليسي هست و نبايد نوشته شوند.
اميدوارم كه مشكلتون حل بشه و اگه نشد بازم در خدمتتون هستم.
موفق و كامياب باشين.
 

hkiani

کاربر تازه وارد
تاریخ عضویت
18 آگوست 2004
نوشته‌ها
21
لایک‌ها
0
محل سکونت
Khorasan, Iran
سلام
از پاسخ شما بسيار سپاس‌گزارم. ولي دستور فوق مورد نظر من نيست. تا جايي كه من اطلاع دارم دستور فوق براي محاسبه‌ي مجموع يك فيلد عددي در كل جدول اطلاعاتي استفاده مي‌شود و اگر اطلاعات گروه‌بندي شده باشند درون هر گروه مجزا اين عمل را انجام مي‌دهد. ولي سوال من اين نيست. (در مثالي كه زدم منظورم را به اين صورت بيان كردم كه مجموع مقادير يك فيلد به صورت انباشتگر براي هر ركورد محاسبه گردد، لطفا به نوشته قبلي يك نگاهي بيندازيد). البته من فكر مي‌كنم با يك دستور ساده‌ي SQL اين كار مقدور نباشد ولي با استفاده از تعريف يك procedure درون بانك اطلاعاتي (به عنوان stored procedure) اين كار را مي‌توان انجام داد. وقتي به نتيجه‌ي مطلوبي رسيدم آن را اين جا خواهم نوشت، شما نيز اگر راه مناسبي يافتيد لطفا آن را در اختيار من قرار دهيد. متشكرم
 
بالا