سایت ساز وبزیخرید بک لینک

Help me about SQL

شروع موضوع توسط hkiani ‏8 سپتامبر 2004 در انجمن برنامه نویسی

  1. hkiani

    hkiani کاربر تازه وارد

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

    Mavis کاربر تازه وارد

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

    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 براي من محاسبه شود.
    محاسبه‌ي كل مقادير يك فيلد عددي را بلدم (در كل جدول) ولي به صورت فوق كه مانند يك انباشتگر مجموع مقادير را براي هر ركورد محاسبه كند بلد نيستم. ببخشيد كه خيلي طولاني شد.
     
  5. Mavis

    Mavis کاربر تازه وارد

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

    hkiani کاربر تازه وارد

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