PDA

View Full Version : بدست آوردن نام یک رکورد خارجی



اوبالیت به بو
یک شنبه 28 تیر 1394, 19:01 عصر
درود بر شما

من یک جدول دارم که در آن اسم نویسنده ها ثبت میشه. یک جدول دیگه دارم که اسم کتاب ها ثبت میشه و این وسط برای اینکه بگم نویسنده/نویسندگان کتاب کیست یک جدول واسط دارم که کد_نویسنده و کد_کتاب رو شامل میشه. حالا در فهرست کتابها یک Select به جدول کتابها دارم و در ستون مربوط به نویسنده باید نام نویسنده آورده بشه. از طریق TemplateField یا SQL مهم نیست.

این کار به چه صورت امکان پذیر هست؟

ممنون

daffy_duck376
یک شنبه 28 تیر 1394, 20:58 عصر
به جز join ک ردن جدوا ل نویسنده - واسط - کتاب - راه دیگه ای نیست.

اوبالیت به بو
دوشنبه 29 تیر 1394, 09:00 صبح
به جز join ک ردن جدوا ل نویسنده - واسط - کتاب - راه دیگه ای نیست.

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

aliasghar2
دوشنبه 29 تیر 1394, 09:45 صبح
سلام بهتره از تابع Stuff در درستور select استفاده کنی
اینم دوتا لینک که واست پیدا کردم من خودم خیلی وقت پیش از این روش استفاده کردم و جواب گرفتم
http://www.beyamooz.com/sql-server/155-function/string-functions/453-%D8%AA%D8%A7%D8%A8%D8%B9-STUFF-%D8%AF%D8%B1-SQL-Server
http://stackoverflow.com/questions/11230725/merge-data-in-two-row-into-one (http://stackoverflow.com/questions/11230725/merge-data-in-two-row-into-one)

asadi.hasan
دوشنبه 29 تیر 1394, 09:45 صبح
سلام،
اگر میخوای هم نام نویسنده باشه و هم نام کتاب ،که قطعا هم باید به همین صورت باشه،شما در جدول واسط،دو فیلد کد کتاب و کد نویسنده باید داشته باشید که هر دوباهم تشکیل کلید اصلی را بدن، و نیازی نیست که کد نویسنده ها در جدول کتاب شما به عنوان کلید خارجی آورده بشه. شما در زمان Select کردن، هر سه جداول رو باهم Join کنید و فقط فیلدهایی رو که گفته شد بیرون بکشید.

malloc
دوشنبه 29 تیر 1394, 10:16 صبح
سلام بهتره از تابع Stuff در درستور select استفاده کنی
اینم دوتا لینک که واست پیدا کردم من خودم خیلی وقت پیش از این روش استفاده کردم و جواب گرفتم
http://www.beyamooz.com/sql-server/155-function/string-functions/453-%D8%AA%D8%A7%D8%A8%D8%B9-STUFF-%D8%AF%D8%B1-SQL-Server
http://stackoverflow.com/questions/11230725/merge-data-in-two-row-into-one (http://stackoverflow.com/questions/11230725/merge-data-in-two-row-into-one)

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

اوبالیت به بو
دوشنبه 29 تیر 1394, 10:37 صبح
سلام،
اگر میخوای هم نام نویسنده باشه و هم نام کتاب ،که قطعا هم باید به همین صورت باشه،شما در جدول واسط،دو فیلد کد کتاب و کد نویسنده باید داشته باشید که هر دوباهم تشکیل کلید اصلی را بدن، و نیازی نیست که کد نویسنده ها در جدول کتاب شما به عنوان کلید خارجی آورده بشه. شما در زمان Select کردن، هر سه جداول رو باهم Join کنید و فقط فیلدهایی رو که گفته شد بیرون بکشید.

همین کار را کردیم. اما چطور این اسامی رو جدا کنیم و در یک فیلد نشون بدیم

aliasghar2
دوشنبه 29 تیر 1394, 12:35 عصر
شنیدم این حرکت سنگین هست و هزینه زیادی رو به sql تحمیل میکنه


فکر نکنم اونقدری سنگین باشه که بشه ازش صرفه نظر کرد به نظر من که این روش کاملا جواب میده و میتونید اسامی نویسنده ها رو کنار هم در یک فیلد قرار بدید
اگه نخواستید از این روش استفاده کنید می تونید خودتون یه فانکشن تو sql بنویسید که یک شماره کتاب بگیره و نام نویسنده ها رو واستون برگردونه

اوبالیت به بو
سه شنبه 30 تیر 1394, 07:58 صبح
مشکل: رکوردها که در جدول واسط هستند در Select مربوطه به صورت یک فیلد نمایش داده بشن و با کاما جدا بشن.