PDA

View Full Version : نمایش رکوردهای تکراری



mohamadlvs
سه شنبه 20 تیر 1391, 02:34 صبح
سلام
در این کوئری اگر در جدول CreditDebt مقدار WholesalerName تکراری باشد یعنی 2 یا 3 یا بیشتر باشد حاصل به ازای هر بار تکرار 2 بار نمایش داده می شود یعنی اگر 3 بار باشد 6 بار نمایش می یابد با 3 رکورد تکراری!
SELECT CreditDebt.SaleOrBuyID, Wholesaler.WholesalerName, Sales.SaleDate, CreditDebt.GoldWhigtDebtor, CreditDebt.ChequeNumber, CreditDebt.ChequeDate, Bank.Name
FROM CreditDebt INNER JOIN
Wholesaler ON CreditDebt.CustomerID = Wholesaler.WholesalerID INNER JOIN
Sales ON Wholesaler.WholesalerID = Sales.CustomerID INNER JOIN
Bank ON CreditDebt.BankID = Bank.BankID
نتیجه
3 علي زارع 1391/04/19 10.97 65 1391/04/19 ملي
10 رضا رمضاني 1391/04/19 5 55 1391/03/19 ملت
13 رضا رمضاني 1391/04/19 3 333 1391/04/12 ملت
10 رضا رمضاني 1391/04/19 5 55 1391/03/19 ملت
13 رضا رمضاني 1391/04/19 3 333 1391/04/12 ملت
20 صندوق1 1391/04/19 61.65 123 1391/04/19 ملي

ولی وقتی جدول Sales را حذف می کنم درست می شود
SELECT CreditDebt.SaleOrBuyID, Wholesaler.WholesalerName, CreditDebt.GoldWhigtDebtor, CreditDebt.ChequeNumber, CreditDebt.ChequeDate, Bank.Name
FROM CreditDebt INNER JOIN
Wholesaler ON CreditDebt.CustomerID = Wholesaler.WholesalerID INNER JOIN
Bank ON CreditDebt.BankID = Bank.BankID

نتیجه
3 علي زارع 10.97 65 1391/04/19 ملي
20 صندوق1 61.65 123 1391/04/19 ملي
10 رضا رمضاني 5 55 1391/03/19 ملت
13 رضا رمضاني 3 333 1391/04/12 ملت

اینم تصویر جداول. لطفن راهنمایی کنید
89484

حمیدرضاصادقیان
سه شنبه 20 تیر 1391, 09:30 صبح
سلام.
شما اول توضیح بدید میخواهید نتیجه Query چی باشه؟ دوم اینکه در جدول Sales چه اطلاعاتی ذخیره می شود؟مثلا برای CustomerId=3 چند ردیف ثبت می شود؟ آیا همه ردیفها تکراری هست؟میشه یک مثال از این جدول بذارید ؟ شما به کدوم ردیفش نیاز دارید؟

mohamadlvs
سه شنبه 20 تیر 1391, 10:12 صبح
نتایج رو که گذاشتم جدول sales هم که در تصویر هست
customerid در جدولهای sales , creditdebit با WholesalerID از جدول Wholesaler ارتباط دارند و کلیدهای خارجی هستند پس customerid می تواند مثلن برای CustomerId=3 چندین ردیف ثبت شود

mohamadlvs
سه شنبه 20 تیر 1391, 10:34 صبح
اینم اطلاعات بیشتر

حمیدرضاصادقیان
سه شنبه 20 تیر 1391, 11:41 صبح
خوب دوست عزیز الان شما از جدول Sales فقط تاریخ فروش رو نیاز دارید؟ به نظرم ساختار جدول Sales شما ایراد داره.چون رکوردهای تکراری داره توش ثبت میشه.
الان در نتیجه ببینید شما مثلا برای دو تا فروش با یک شماره و یک کاربر مشخصات مختلفی دارید که این الان دچار اشکال میکنه و نمیتونید گزارش دقیقی بدست بیارید.
شما باید یک جدول Header داشته باشید و یک جدول Detail .الان در همین تصویری که گذاشتید Saleid =12 با customerid=12 دوبار تکرار شده همه اطلاعات یکی هستند به جز کد محصول و مبالغ. در جدول اصلی شما باید Customerid و saleid و تاریخ و مبالغ کل رو داشته باشید در جدول جزئیات با توجه به Custid و ردیف و کد محصول مابقی مشخصات رو داشته باشید که مثل الان به مشکل برنخورید.
الان برای گرفتن نتیجه فوق شما باید حداقل بتونید یک مقدار واحد برای یک ردیف درنظر بگیرید تا بتونید saledate رو نیز بیارید.چون اگر بیایم در Derived Table نیز فقط یک ردیف رو بیاریم بازم معلوم نیست تاریخ مشخص اون فروش رو به شما بده به خاطر مقادیر تکراری که نمونش رو عرض کردم.

mohamadlvs
سه شنبه 20 تیر 1391, 12:12 عصر
خوب دوست عزیز الان شما از جدول Sales فقط تاریخ فروش رو نیاز دارید؟ به نظرم......

ممنون از راهنماهی هاتون و بابت وقتی که گذاشتید
فقط من بقیه دیاگرام رو هم می ذارم یه نگاه بندازید فک کنم باید برای جدول خریدم هم یک فکری بکنم

حمیدرضاصادقیان
سه شنبه 20 تیر 1391, 12:57 عصر
جدول خرید هم مانند فروش به دو قسمت تبدیل کنید یک جدول Header و یک جدول Detail .

mohamadlvs
سه شنبه 20 تیر 1391, 15:57 عصر
به طریقی که گفتید جداول را تغیییر دادم
چند سوال دیگه
1) بستانکاران و بدهکاران را در جدولcreditdebit ثبت می شود و برا ی تشخیص بدهکار یا بستانکار بودن از فیلد creditdebit استفاده کردم و همچنین برای اینکه مشخص شود تسویه شده یا خیر از فیلد StatusPay معلوم می شود.
آیا باید برای هر کدام (بستانکاران ، بدهکاران) جدولی جدا ساخت؟

آیا کلیه بد و بس باید در یک رکورد ذخیره شود یا خیر مثلن شخص X امروز خریدی می کند و بدهکار می شود باز فردا هم خریدی می کند و باز بدهکار می شود آیا این دو حساب باید در یک رکورد ذخیره شود یا در دو رکورد؟

کلید اصلی جدول بد و بس را چگونه تولید کنم آیا ربطی به جدول خرید و فروش دارد؟

2)آیا کلید های اصلی جداول خرید و فروش هیچ ربطی به هم دارند مثلن اگر شخصی در یک فاکتور هم خرید و هم فروش به ما داشته باشد باید خریدش جدا و فروشش جدا ثبت شود در اینصورت چگونه می توان یک گزارش از خریدها و فروش ها داشت.
و همچنین شماره فاکتور چگونه مشخص می شود آیا گزارشها یا فاکتور ها باید در جدولی جدا ذخیره شوند یا این که می توان آن را از همین جداول به دست آورد

لطفن اگه مثالی ، منبعی در مورد سیستم های خرید و فروش دارید بذارید

حمیدرضاصادقیان
سه شنبه 20 تیر 1391, 16:23 عصر
ببینید برای بدهکار یا بستانکار شما باید یک جدول برای اسناد مالی داشته باشید.
هرفاکتوری که خرید یا فروش میشه شامل یک سند هست.
شما برای اینکه متوجه بشید یک مشتری چه کارکردی داشته ، گزارشی از اسناد مالی به کاربر میدهید.
برای هر ردیف بدهکار یا بستانکار دقیقا باید یک ردیف ثبت بشه.
به جای اینکارها پیشنهاد میکنم نرم افزار رو به چند بخش تبدیل کنید
سپس یک مطالعه روی قوانین نرمال سازی داشته باشید و این قوانین رو روی جداولتون اعمال کنید چون الان این قوانین روی جداول شما اعمال نشده است.