PDA

View Full Version : سوال: راهنمایی در خصوص نوشتن یک دستور!



reza_devel0per
جمعه 26 آبان 1391, 14:46 عصر
سلام...

من یک جدول گروه ها دارم که فرض کنید دو تا فیلد کد و عنوان دارد.
یک جدول دیگر هم دارم برای مشتری ها که هر مشتری می تواند متعلق به یک گروه باشد.
میشه راهنمایی بفرمایید که با چه دستوری میتونم این خروجی رو بدست بیارم؟!

کد گروه - عنوان گروه - تعداد مشتریان متعلق به گروه



ممنون.

rezaprogrammer
جمعه 26 آبان 1391, 15:55 عصر
میخاین اطلاعات رو در DataGridView ببینید یا گزارش به صورت Report داشته باشید؟

asghar2008
جمعه 26 آبان 1391, 16:04 عصر
با سلام

شما ابتدا باید در جدول مشتری ،کد گروه ر, نیز اضافه کنید.
مثال:

کد1 مربوط به مشتریان vb.net
کد2 مربوط به مشتریان C#‎‎.net

حالا در جدول مشتریان:
کد گروه-کد مشتری-نام-نام خانوادگی-نام پدرو...


مثال:اگر شما می خوهید تعداد مشتریان مربوط به گروه vb.net رو بدست بیاری،با ذستور زیر میشه این کار رو انجام داد:

select * from tblmoshtari where codegoroh=1

با دستور بالا شما میتونید مشخصات مشتریان رو نیز در دیتا گرید ویو مشاهده کنید

اگر فقط تعداد مشتریان مربوط به VB.Net رو می خواهید بدونید از دستور زیر استفاده کن:

select count(codegoroh) from tblmoshtari where codegoroh= 1

که در این صورت فقط تعداد مشتریان رو بر میگردونه. مثلا اگر شما 9 تا مشتری Vb.net داشته باشین
فقط عدد 9 رو بر میگردونه.

reza_devel0per
جمعه 26 آبان 1391, 17:38 عصر
ضمن تشکر از پاسخگویی شما، باید عرض کنم که سوال بنده کاملا واضح بود...
بنده این سه تا ستون رو می خوام با هم در خروجی تولید کنم : {کد گروه} -{ عنوان گروه} -{تعداد مشتریان متعلق به گروه}

فکر میکنم با join بشه، اما دستورش رو کامل بلد نیستم :(

mhq1368
جمعه 26 آبان 1391, 17:52 عصر
ضمن تشکر از پاسخگویی شما، باید عرض کنم که سوال بنده کاملا واضح بود...
بنده این سه تا ستون رو می خوام با هم در خروجی تولید کنم : {کد گروه} -{ عنوان گروه} -{تعداد مشتریان متعلق به گروه}

فکر میکنم با join بشه، اما دستورش رو کامل بلد نیستم :(

سلام خدمت دوست عزیر

بله شما درست میگید با join میشه این کار رو انجام داد به صورت زیر

اگه شما یه جدول به نام grouptbl و customers داشته باشید با فیلد های زیر

grouptbl:gcode-gtopic

customer:Name,family,.....gcode

که gcode برای جدول مشتریها کلید خارجی محسوب میشه

حالا باید کد زیر رو براشون بنویسید


select grouptbl.gcode from grouptbl inner join customer on gcode where شرطی که میخواین

asghar2008
جمعه 26 آبان 1391, 20:10 عصر
سلام

فرمایش شما درست دوست عزیز
البته بدون join هم میشه این کار رو انجام داد
گه شما یه جدول به نام grouptbl و customers داشته باشید با فیلد های زیر

grouptbl:gcode-gtopic

customer:Name,family,.....gcode

که gcode برای جدول مشتریها کلید خارجی محسوب میشه



Select customer.name,customer.family,customer.father, customer.gcode,grouptbl.gtopic
from customer,grouptbl where customer.gcode=grouptbl.gcode

mhq1368
جمعه 26 آبان 1391, 20:24 عصر
آره شما درست میگین با این روش هم میشه انجام داد

reza_devel0per
شنبه 27 آبان 1391, 01:47 صبح
asghar2008 و mhq1368 عزیز ، باز هم ممنونم ولی این کد هایی که شما لطف کردید رو من هم بلد بودم.
این دستورات چیزی نیست که من میخوام. لطفا به صورت سوال دقت کنید.
فیلد اول و دوم که هیچی، شرطی هم برای این دو تا نیاز نیست! فیلد سوم تعداد چندین رکورد هستش که من در قسط شرط گذاری این ناحیه مشکل دارم!

فرید نجفلو
شنبه 27 آبان 1391, 03:08 صبح
سلام

SELECT tblCategory.ID , tblCategory.Title ,
(SELECT COUNT(tblCostumer.CategoryID)
FROM tblCostumer WHERE
tblCostumer.CategoryID = tblCategory.ID) AS CostumerCount
FROM tblCategory

reza_devel0per
شنبه 27 آبان 1391, 08:00 صبح
ممنون جناب نجفلو ، دقیقا همچین چیزی میخواستم؛ با کد شما مشکل رفع شد.
فقط میشه بفرمایید ISNULL برای چه عملی نوشته شده؟! بدون اون هم بدرستی عمل میکنه...

سپاس فراوان

فرید نجفلو
شنبه 27 آبان 1391, 13:36 عصر
سلام
اولین گام برای حل مسئله درک مسئله هست

بدون ISNULL هیچ مشکلی پیش نمیاد (البته تو این دستور) ولی من معمولا جهت اطمینان برای Sub Query ها از اون استفاده می کنم تا احیانا اگه نتیجه NULL بود برنامه دچار مشکل نشه
جهت ساده تر شدن دستور منم حذفش کردم
فقط یادتون باشه وقتی دارید از Sub Query ها استفاده می کنید حتما نام فیلد ها رو بصورت کامل بنویسید (مثال: tblCategory.ID) اگه این کار رو نکنید ممکنه تو فیلد ها تداخل بوجود بیاد علی الخصوص فیلدهای ID که معمولا همه جا با همین اسم هستن