ورود

نسخه کامل مشاهده نسخه کامل : جست و جو در اس کیو ال



shadmehrshadow1
28-12-2012, 21:37
سلام
من میخوام یه جست و جو در اس کیو ال انجام بدم که به مشکل برخوردم. ممنون میشم کمک کنید.
ما یه جدول داریم به اسم Table1 که 10 تا فیلد داره . و یه فیلد کلید هم داره به نام t_code
و یه جدول دیگه داریم به نام Table2 که دو فیلد داره. یکی هم نام کلید جدول قبلی t_code و دیگری به اسم values .
موقعی که میخوام اطلاعاتی در Table1 قرار بدم یک مقداری رو از کاربر می گیرم که از نوع عددی هست و اون مقدار رو میریزم توی فیلد values جدول دیگه و کد ثبت Table1 رو توی t_code جدول دوم میریزم.
یعنی به این شکل


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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من میخوام وقتی کاربر عدد 5 رو میده از جدول Table2 سرچ کنه و هرجا که تو این جدول، values مقدار برابر 5 رو داشت رو انتخاب کنه که در اینجا مقدار های 1254 و 1345 رو به دست می آوریم . حالا میخوایم اطلاعات جدول Table1 رو با این شرط نشون بدیم که مقدار کدشون برابر با 1254 و 1345 باشه.
یعنی یه چیزی مثل اشتراک فیلد t_code جدول Table2 با شرط values=5 با جدول Table1 .
امیدوارم تونسته باشم منطورمو برسونم.
من از linq استفاده نکردم در این برنامه و نمیتونمشم تغیر بدم . ممنون میشم اگه به روشی غیر از linq کمک کنید.

shotok
28-12-2012, 22:49
بسم الله الرحمن الرحیم
با سلام
یه کوئری ساده جوین بزنید.

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

shadmehrshadow1
06-02-2013, 21:54
سلام
دو تا بخش سوال داشتم :
1- ما یه جدول داریم مثلا جدول اول : name,family,age,tel,address و یه جدول دیگه که همین فیلد های جدول اول رو داره به علاوه فیلد های دیگه.
من میخوام وقتی اطلاعاتی در جدول دوم وارد می کنیم و ثبت می کنیم . بعدش اطلاعات فیلد های name,family,age,tel,address در جدول دوم رو با همه ی رکورد های موجود در جدول اول مقایسه کنه و اون سطر هایی که شباهت بیشتری بهش دارن رو در خروجی به دست بیاریم. اگه بشه درصد شباهت رو هم به دست آورد خیلی خوبه . نمیدونم که تونستم منظورم رو برسونم یا نه.
2- من یه جدول دارم که توش یه فیلد داره به نام city که درونش نام شهر رو باید ذخیره کنم. اما برای اینکه هم افزونگی به وجود نیاد و حجم بانک کم بشه یه جدول دیگه با نام cites درست کردم که توش نام شهر ها هست که به هر کدوم یک کد دارند. و موقع دخیره کردن اطلاعات توی جدول اولی دیگه نام شهر رو ذخیره نمی کنم و فقط کد اون شهر رو ذخیره می کنم.
تا اینجاش مشکلی نیست ولی وقتی برای جست و جوی اطلاعات می خوام نتایج اون سطر رو نشون بدونم در قسمت فیلد شهر فقط کد شهر نشون داده میشه همون طوری که ذخیره شده . مثلا 11 که اینجا واقعا برای کاربر بی معنی هست و باید بره و ببنه توی جدول cites و کد 11 رو ببینه که نام شهرش چیه . حالا میخوام بدونم که جستو جو رو چه طور انجام بدم که به جای اون عدد بره و از توی جدول نام شهر رو پیدا کنه و نامش رو نشون بده.
البته این یه مثال هست و ممکنه توی یه جدول چند تا فیلد اینجوری داشته باشم.
ممنون

shadmehrshadow1
09-02-2013, 19:47
ممنون میشم اگه دوستان تو این مورد کمک کنند

shotok
11-02-2013, 14:36
بسم الله الرحمن الرحیم
با سلام

ما یه جدول داریم مثلا جدول اول : name,family,age,tel,address و یه جدول دیگه که همین فیلد های جدول اول رو داره به علاوه فیلد های دیگه.
من میخوام وقتی اطلاعاتی در جدول دوم وارد می کنیم و ثبت می کنیم . بعدش اطلاعات فیلد های name,family,age,tel,address در جدول دوم رو با همه ی رکورد های موجود در جدول اول مقایسه کنه و اون سطر هایی که شباهت بیشتری بهش دارن رو در خروجی به دست بیاریم. اگه بشه درصد شباهت رو هم به دست آورد خیلی خوبه . نمیدونم که تونستم منظورم رو برسونم یا نه.
منظورتون رو متوجه نشدم؛ به نظرم بهتره خود صورت مساله رو بیان کنید تا بهتر متوجه مشکلتون بشیم.


من یه جدول دارم که توش یه فیلد داره به نام city که درونش نام شهر رو باید ذخیره کنم. اما برای اینکه هم افزونگی به وجود نیاد و حجم بانک کم بشه یه جدول دیگه با نام cites درست کردم که توش نام شهر ها هست که به هر کدوم یک کد دارند. و موقع دخیره کردن اطلاعات توی جدول اولی دیگه نام شهر رو ذخیره نمی کنم و فقط کد اون شهر رو ذخیره می کنم.
تا اینجاش مشکلی نیست ولی وقتی برای جست و جوی اطلاعات می خوام نتایج اون سطر رو نشون بدونم در قسمت فیلد شهر فقط کد شهر نشون داده میشه همون طوری که ذخیره شده . مثلا 11 که اینجا واقعا برای کاربر بی معنی هست و باید بره و ببنه توی جدول cites و کد 11 رو ببینه که نام شهرش چیه . حالا میخوام بدونم که جستو جو رو چه طور انجام بدم که به جای اون عدد بره و از توی جدول نام شهر رو پیدا کنه و نامش رو نشون بده.
این موردی که فرمودید با جوین حل میشه.
فرض بفرمائید 2 جدول city,MyTable داریم. در MyTable فیلد citycode به عنوان کلید خارجی آورده شده است. در جدول city فیلدهای citycode,cityname موجود است.

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

shadmehrshadow1
11-02-2013, 21:13
ممنون دوست عزیر

فرض بفرمائید 2 جدول city,MyTable داریم. در MyTable فیلد citycode به عنوان کلید خارجی آورده شده است. در جدول city فیلدهای citycode,cityname موجود است.

در این روش توی جست و جو تمام فیلد های جدول mytable و city نمایش داده میشه . یعنی یک بار یه جا citycode که برای جدول mytable هست نمایش داده می شه و هم یه جا citycode و cityname برای جدول city نمایش داده میشه یعنی دو بار اضافی citycode نمایش داده میشه.در حالی که ما فقط به cityname احتیاج داریم. که مجبوریم visible کنیم اون ستون هارو تا نمایش داده نشه. راه دیگه ای نیست؟
و اینکه اگه 10 تا جدول توی این جست و جو داشته باشیم باید بعد از where یه and بنویسیم و همین کار دستور رو 10 بار برای جدوال دیگه هم استفاده کنیم؟
مثل زیر:

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

منظورتون رو متوجه نشدم؛ به نظرم بهتره خود صورت مساله رو بیان کنید تا بهتر متوجه مشکلتون بشیم.

بزارید این جور بگم .
فرض کنید ما یک جدول داریم به نام table1 که شامل فیلد های name,family,age,tel,address هست .
که مثلا اطلاعات زیر توی این جدول هست به ترتیبی که بالا گفتم.

علی ، زند ، 20 ، 0911346 ، مشهد
محسن ، زند ، 21 ، 0911347 ، اصفهان
علی ، حمیدی ، 20 ، 0911345 ، تهران

من میخوام جست و جو به جای اینکه بر اساس یک فیلد انجام بشه مثلا فیلد name ، روی تمام فیلد ها انجام بشه. مثلای برای جست و جو بجای اینکه فقط بدیم محسن تا جوابی رو بده . تمام فیلد ها رو بدیم . مثلا مقدار های زیر رو فرض کنید.

محسن ، حمیدی ، 20 ، 0911345 ، تهران
1- یعنی جست و جو بر اساس تمام فیلدها.
2- در صورتی که عملیات 1 انجام شد اونوقت حتما نتیجه رو بر اساس میزان شباهت به ترتیب نشون بده که این جوری میشه:

علی ، حمیدی ، 20 ، 0911345 ، تهران | 4 شباهت
علی ، زند ، 20 ، 0911346 ، مشهد | 2 شباهت
محسن ، زند ، 21 ، 0911347 ، اصفهان | 1 شباهت
امیدوارم که اینبار تونسته باشم منظورم رو برسونم.

shotok
12-02-2013, 22:09
بسم الله الرحمن الرحیم
با سلام

در این روش توی جست و جو تمام فیلد های جدول mytable و city نمایش داده میشه . یعنی یک بار یه جا citycode که برای جدول mytable هست نمایش داده می شه و هم یه جا citycode و cityname برای جدول city نمایش داده میشه یعنی دو بار اضافی citycode نمایش داده میشه.در حالی که ما فقط به cityname احتیاج داریم. که مجبوریم visible کنیم اون ستون هارو تا نمایش داده نشه. راه دیگه ای نیست؟
لازم به کار اضافی نیست؛ هر فیلدی که تمایل دارید در select قرار دهید:

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

در تاپیک [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] یه کدی برای نمایش فاکتورها گذاشته بودم که مسئله جست و جوتون رو مرتفع میکنه. (راجع به پارامترهای optional تحقیق کنید).
موفق باشید.