ورود

نسخه کامل مشاهده نسخه کامل : سي شارپ و sql



آرام جان گل
21-06-2007, 21:21
سلام


از كاربر some one بسيار ممنونم
من برنامه يك كتابخانه رو مي نويسم و در محيطsql جدولي دارم براي اسنادم( كتاب و سي دي و مقاله و نامه و نشريه و............) كه چندين ستون دارد مثل عنوان نوسنده زبان نوع گروه ناشر و .............
هر كدام از اين اسناد نوعش در ستون ( نوع )مشخص شده (همون كتاب و مقاله و سي دي ......) و در ضمن زبان سندم هم مشخص شده (فارسي و لاتين )
ستون( نوع سند) كليد خارجي است كه مقدارش را از يك جدول ديگه مي گيره و ستون زبان هم nvarchar كه مقدارش (فارسي و يا لاتين ) است
حالا بريم سراغ محيط سي شارپ :

من در بخشي از برنامه كه كار جستجو را براي كاربر انجام مي دهد چند تا چك باكس دارم كه اين ها نو ع و زبان سند دلخواه كاربر را چك مي كنند مثلا چك باكس هاي من اين طوريند:
كتابهاي فارسي
كتابهاي لاتين
سي دي هاي فارسي
سي دي هاي لاتين
مقالات فارسي
.
.
.
.
.
همانطور كه پيداست در هركدام از چك باكس ها نوع و زبان سند با هم چك خواهد شد
بعد به دنبال سند دلخواه كاربر مي گردد و حالا در اين جا مشكل من شروع مي شود
من مي خوام كه رشته sql اي براي search بنويسم كه اطلاعات يافته شده را دسته بندي شده به كاربر نمايش دهد مثلا بگو يد كه چند تا كتاب فارسي پيدا كرده و يا چند تا سي دي لاتين پيدا كرده
انچه مهم است اينه كه تعدادرا بگه و دسته بندي را انجام بدهد
اون چيزي كه به ذهن من مي رسه اينه كه از رشته زير استفاده كنم

select " my field" ,count (*) ………………………….. group by " my field"
اما اين رشته يافته هاي مرا بر اساس فقط يك ستون و ان هم ستون "field " كه يكي از ستون هاي جدول است مرتب خواهد كرد و با تعداد (زcount)نمايش مي دهد
در حالي كه من دو ستون را بايد مورد بررسي قرار دهم ستون نوع سند و ستون ز بان
حالااز چه رشته اي استفاده كنم يا از چه ترفندي استفاده كنم يا چه تغييري در پايگاه و جدولم انجانم دهم تا بتونم اين كار را انجام بدم؟
لطفا خيلي راهنمايي كنيد
بسيار ممنون

آرام جان گل
25-06-2007, 21:38
سلام

يكي از دوستان كمي كمكم كرد و گفت كه با where ----- كنم و بعد بر اساس هر كدوم از ستون ها كه مي خواهي دسته بندي كن (كه من براساس نوع سند گروه بندي كردم) ولي كمك ايشان براي محيط سي شارپ كمكم نمي كنه
چون
طبق آنچه كه قبلا گفتم من با چك باكس ها كار مي كنم و اين چك باكس ها دقيقا با هم فرق مي كنن
يعني اينكه مثلا من هم چك باكس (كتابهاي فارسي ) دارم و هم چك باكس (كتابهاي لاتين)

حالا اگر من براساس اين رشته جستجو را انجام بدهم :
رشته من :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا خروجي اين رشته :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا خروجي اين رشته را من د رسي شارپ در يك ديتا تيبل مي ريزم و حالا مشكل شروع مي شود
مثلا براي كتاب فارسي ركورد ها را برا ساس كدوم ستون اين تيبل جدا كنم
اگه بخوام ركورد را براساس T_Id جدا كنم كه براي كتاب فارسي و لاتين مثل هم اند و هر دو 17 هستند ؟
حالا چي كار كن

شايد اگه توي جدولم در پايگاه يه كم تغيير ايجاد كنم مشكل حل بشه ولي نمي دونم چه تغييري

لطفا راهنمايي كنيد
ممنون و مرسي

آرام جان گل
30-06-2007, 23:49
سلام
من يه بار ديگه خواسته ام را سعي مي كنم واضح تر بگم

من مي شم مشتري و شما برنامه ساز خوبه ؟ شما بايد بتونيد خواسته مشتري را براورده كنيد . من فكر نمي كنم كه موضوع سختي باشه شايد خيلي راحت حل بشه ولي من گيج و سردرگم هستم

خوب آقاي برنامه ساز من يه فرم جستجو براي كتابخانه ام مي خوام
من يك فرم مي خوام كه يك تكست باكس داشته باشه براي وارد كردن آنچه كاربر به دنبال آن مي گرده و يه دكمه تاييد و يه باكسي (پانل)شامل چند تا چك باكس

هر كدام از اين چك باكس ها بايد دو مورد مهم از يك سند(كه اين سند مي تونه كتاب يا سي دي يا مقاله يا نشريه يا .......) را در نظر بگيرند دقت كنيد : زبان سند (فارسي يا لاتين) و نوع سند (كتاب . سي دي . مقاله .............)

مثلا من شش تا چك باكس دارم :
كتابهاي فارسي يعني (سند نوعش كتاب و زبانش فارسي باشد)
كتابهاي لاتين " " "" "" "" "" لاتين ""
سي دي هاي فارسي " " "" "" سي دي و زبانش فارسي ""
سي دي ها لاتين
نشريه ها ي فارسي
نشريه هاي لاتين

حالا كمي از جدول پايگاه صحبت كنيم اين جدول يك ستون بنام "زبان" دارد كه زبان سند را مي گويد و يك ستون ديگر به نام "نوع" كه نوع سند را مي گويد و كليد خارجي است و مقدارش را از جدول انواع مي گيرد


خوب حالا من اين طوري مي نويسم :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اگر من براساس ستون language در حال مرتب سازي هستم چون مي گم gorup by Language

حالا بگم چه اتفاقي مي افته ؟ البته شما مي دونيد كه چه اتفاقي مي افته ولي اين همون جايي است كه همه بهش بي توجه هستن و در حقيقت مشكل منه
لطفا يه كم دقت كنيد
داره ستون ها را براساس ستون Languages مرتب مي كنه دقت دقت : تمام ستون ها يي كه زبان شان مثل هم است را در يك گروه قرار مي دهد همه سند هايي(كتاب. سي دي . مقاله و .........) كه زبانشان يكسان است را در يك گروه قرار مي دهد دقت دقت : در حالي كه من مي خواهم سند هايي كه در يك نوع و يك زبان هستند در يك گروه قرار گيرند يعني سندهاي كتابي كه زبان لاتين دارند در يك گروه باشند و
سند هاي كتابي كه زبان فارسي دارند در يك گروه قرار گيرند و
.
.
.
.
.
.
.
اين انتظار منه
البته شايد من بر سر اين رشته اي كه نوشته ام مشكل دارم يعني اين كه شايد مشكل من با اصلاح رشته حل بشه و يا با اصلاح جدولم و يا يه ترفند ديگه نمي دونم

رشته منو ببينيد

کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ببينيد وقتي من با or جستجو مي كنم يعني اين كه بايد همه اون هايي كه در هر مورد هست نمايش دهد

خوب پس اون هايي رو نشون مي دهد كه "دقت كنيد" زبان لاتين و T_ID برابر 16 دارند و زبان لاتين و T_Id برابر 17 دارند

"دقت كنيد " كه چون مي نويسيم group by Languages همه رو بر اساس زبان گروه بندي كرده و همه اون هايي كه زبان يكساني دارند در يك ركورد نمايش مي دهد
يعني خروجي اين كوئري يك ركورد است كه در ستون (count) عدد 2 قرار مي گيره

در حالي كه طيق نياز من و اينكه تعداد منحصر به فرد برام مهمه مي خوام زبان لاتين و T_ID برابر 17 در يك ركورد جداگانه نمايش يابد و زبان لاتين و T_ID برابر 16 در يك ركورد جداگانه ديگه قرار بگيره

مرسي

راهنمايي كنيد