PDA

View Full Version : سوال: ليست بدهكاران



MOJTABAATEFEH
چهارشنبه 15 مهر 1388, 11:52 صبح
سلام دوستان عزيز من در سايت جستجو كردم ولي راه حلي پيدا نكردم من مي خوام از يك جدول كه (كد شخص و نام شخص و نام شركت شخص و بدهي و بستانكاري شخص) را ثبت مي كند يك Query بگيرم كه كد ، نام و نام شركت هر شخص به اضافه مبلغ كلي هر شخص (ستون بدهكار منهاي ستون بستانكار) را نمايش دهد با اين شرط كه اين ستون مبلغ كلي مثبت باشد يا به اصطلاح اشخاص بدهكار نمايش داده شوند

با تشكر

hadisalahi2
چهارشنبه 15 مهر 1388, 12:09 عصر
شما برای انجام گروهبندی ها به همراه محاسبات باید از دستور Group By در SQl استفاده کنید.
منتها گروه بندی رو باید بر اساس یک فیلد انجام دهید. بعد از انجام عمل گروهبندی ، می تونید با عمل Join اطلاعات لازم رو از جدول دیگه استخراج کنید.

MOJTABAATEFEH
پنج شنبه 16 مهر 1388, 14:35 عصر
دوست عزيز تمام اين فيلدها كه نوشتم در يك جدول هستند
تا حدودي مي دونم بايد چكار كنم لطفا با توجه به توضيحات خودتان يك مثال بزنيد

با تشكر

MOJTABAATEFEH
جمعه 17 مهر 1388, 12:56 عصر
جالبه واقعا كسي نيست جواب اين سؤال رو بتونه بده

Hamid.Kad
جمعه 17 مهر 1388, 14:02 عصر
Select COde_shakhs,Name,Name_Sherkat, (Bedehi - Bestankari) as Kol from T1
where Bedehi > Bestankari

merced
جمعه 17 مهر 1388, 15:23 عصر
جالبه واقعا كسي نيست جواب اين سؤال رو بتونه بده

كسي هست ولي سوال شما بر مي گرده به اطلاعات و دانش پايه اي SQL خودتون.
مطمئناً شما بايد سطح اطلاعات SQLي تو ببري بالا وگرنه با مشكلات زيادي از اين دست روبرو مي ميشي.
در هر حال جواب ندادن رو به حساب تونستن، دونستن، خواستن و ... نذاريد.

MOJTABAATEFEH
جمعه 17 مهر 1388, 19:38 عصر
دوست عزيز ممنون از راهنماييتون من چند ساله با SQL و برنامه نويسي سروكار دارم مال امروز و ديروز نيست شما هم بهتره اگر مي تونين جواب بدين و در غير اين صورت بزاريد ديگران جواب بدهند اين سايت مال اينطور جواب دادن ها نيست :بوس::قلب:

يكي از بزرگان :
همه چيز را همگان دانند

MOJTABAATEFEH
جمعه 17 مهر 1388, 19:44 عصر
Select COde_shakhs,Name,Name_Sherkat, (Bedehi - Bestankari) as Kol from T1
where Bedehi > Bestankari

دوست خوبم ممنون از جوابت ولي يه مشكلي اينجا هست
ببين اينكه شما نوشتي درست حالا ببين مي توني با اين تغيير اصلاحش كني چون سؤال من اين بود؟

Select COde_shakhs,Name,Name_Sherkat,sum(bedeh-bestan) as total from table1


و با اين شرط كه قسمت قرمز مثبت باشد (>0)


موفق باشي

merced
جمعه 17 مهر 1388, 20:42 عصر
Select COde_shakhs,Name,Name_Sherkat,sum(bedeh-bestan) as total from table1




دستور بالا Aggregate داره ولي Group By نداره پس كار نمي كنه


SELECT COde_shakhs, SUM(Bed - bes) AS Total
FROM (SELECT COde_shakhs, Bed, bes
FROM Table1
WHERE (Bed > bes)) AS temptble
GROUP BY COde_shakhs



اميدوارم به درد بخوره ...

MOJTABAATEFEH
جمعه 17 مهر 1388, 21:48 عصر
دستور بالا Aggregate داره ولي Group By نداره پس كار نمي كنه


SELECT COde_shakhs, SUM(Bed - bes) AS Total
FROM (SELECT COde_shakhs, Bed, bes
FROM Table1
WHERE (Bed > bes)) AS temptble
GROUP BY COde_shakhs

اميدوارم به درد بخوره ...

ممنون دوست عزيز ولي كد شما فقط ركوردهايي كه فيلده بدهكار آنها مقدار دارد را بر ميگرداند و ركوردهاي با فيلد بستانكار داراي مقدار را بر نمي گرداند و بنابراين در محاسبه

sum(bedeh-bestan)l

دچار مشكل مي شود و درست محاسبه نمي كند

ا تشكر

merced
شنبه 18 مهر 1388, 05:58 صبح
پس همون اولي درسته ديگه ..!!!


SELECT CID, SUM(Bed - bes) AS Total
FROM dbo.tBedBes
GROUP BY CID
HAVING (SUM(Bed - bes) > 0)

Hamid.Kad
شنبه 18 مهر 1388, 14:03 عصر
اگر به ازای هر شخص، یک رکورد در جدول وجود داره جواب شما در پست 5 و اگر بیش از یک رکورد وجود داره در پست شماره 11 داده شده است.

merced
شنبه 18 مهر 1388, 18:34 عصر
اگر به ازای هر شخص، یک رکورد در جدول وجود داره جواب شما در پست 5 و اگر بیش از یک رکورد وجود داره در پست شماره 11 داده شده است.

برا من دقيقاً نيفتاده هنوز :عصبانی++:. يه مثال بزن.. يه سري ورودي و خروجي كه مي خواي بنويس

Hamid.Kad
شنبه 18 مهر 1388, 18:45 عصر
مهندس فکر کنم منو با کسی که سوال پرسید اشتباه گرفتی :) منم آخه درست نفهمیدم منظورشون دقیقاً چی بود. هر دوتا حالت ممکن رو گفتم...

merced
شنبه 18 مهر 1388, 19:44 عصر
:قهقهه:
واقعاً :متعجب: .... ايول ... چه حواسي

MOJTABAATEFEH
شنبه 18 مهر 1388, 23:56 عصر
پس همون اولي درسته ديگه ..!!!


SELECT CID, SUM(Bed - bes) AS Total
FROM dbo.tBedBes
GROUP BY CID
HAVING (SUM(Bed - bes) > 0)

از همه دوستان ممنونم
و تشكر ويژه هم دارم از دوست خوبم merced به خاطر جوابشون مشكل حل شد

MOJTABAATEFEH
یک شنبه 19 مهر 1388, 23:34 عصر
دوست عزیز merced برای بدست آوردن تعداد افراد بدهکار چه تغییری باید در کد شما بدم؟

با تشکر

eskandarzadeh
دوشنبه 20 مهر 1388, 01:35 صبح
ببینید فرض کنید ما
یک جدول برای مبالغ دریافتی از فرد داشته باشیم.
یک جدول برای نگهداری اطلاعات فرد
یک جدول برای مبالغی که فرد رو بدهکار می کنیم یا به حساب بدهی فرد میخواهیم درج کنیم. ممکنه در تاریخ های مختلف تحت رکوردهای مختلف این کار انجام بشود.

ارتباط جدول فرد با جدول بدهکا و جدول بستانکاری یک به بینهایت است .

حالا ما باید برای هر فرد
یک کوئری باید بگیریم که جمع مبالغ دریافتی از فرد رو حساب کنه
یک کوئری بگیریم که جمع مبالغی که به حساب بدهی فرد درج شده رو حساب کنه
بعد نتیجه این کوئری ها رو از هم کم کنیم اگر بیشتر از صفر شد یعنی فرد بدهکاره و باید مشخصات فرد بدهکار و عدد بدهی بدست آمده به انتهای گزارش ما اضافه بشه

حالا مشکل اینجاست که چطور باید این نتایج رو تو یک DBGrid نمایش بدهیم???

merced
دوشنبه 20 مهر 1388, 05:53 صبح
برای بدست آوردن تعداد افراد بدهکار چه تغییری باید در کد شما بدم؟


بايد يه كوئري ديگه بنويسي

Select Count (*) From (
SELECT CID, SUM(Bed - bes) AS Total
FROM dbo.tBedBes
GROUP BY CID
HAVING (SUM(Bed - bes) > 0) )

حسین شهریاری
سه شنبه 21 مهر 1388, 10:07 صبح
سلام !!

شاید کد زیر بدردتون بخوره.


select Code,Name,Sum(Bed-Bes) as Mande from Table1
Group By Code
Having Bed-Bes>0

eskandarzadeh
دوشنبه 04 آبان 1388, 01:54 صبح
شما همتون بدهی و بستانکاری رو یک فیلد در یک رکورد در نظر گرفتید در حالی که باید مبالغ بدهی و بستانکاری توسط تابع Sum از جداول مربوطه بیرون کشیده بشه .