PDA

View Full Version : سلکت از سه جدول



b.paseban
یک شنبه 17 بهمن 1389, 14:10 عصر
سلام بر دوستان برنامه نویس.
من توی یکی از صفحاتم می خوام مقالات رو نمایش بدم.
هر مقاله توسط چند نفر نوشته شده و هر نفر هم چند مقاله نوشته.
من برای اینکار از سه تا جدول استفاده کردم که یکی مقالات رو نگه میداره و یکی اسامی نویسندگان و یکی دیگه هم کلیدای اصلی این دوتا جدول رو بعنوان کلید خارجی نگه میداره.
فیلدای جدول مقالات:
ArticleID,AddedDate,Title,Preview,Body,Keyword,Com mentsEnabled,OnlyForMembers,ViewCount
فیلدای جدول نویسندگان:
AddedByID,Name,Picture,DateBirthday,Education,Poin t,EmailAddress
حالا من میخوام بعد از ارسال پارامتر ArticleID بوسیله querystring در صفحه مقصد کوئری بنویسم که مقاله مورد نظر رو با نویسندگان اون نمایش بدم.
چطوری باید اینکار رو انجام بدم؟البته توی دوتا کنترل مجزا(یکی برای نمایش مقاله و اون یکی برای نمایش اسامی نویسندگان)

cjNet
یک شنبه 17 بهمن 1389, 16:30 عصر
سلام دوست من .

به نظر من شما باید از دستور inner join در دستور sql خود استفاده کنید .

فرض می کنیم نام آن جدولی که کلید های هر دو جدول رو در خود داره T است :



select * from Maghalat inner join T on Maghalat.ArticleID =T.ArticleID
inner join Nevisandegan on T. AddedByID=Nevisandegan. AddedByID
where Maghalat.ArticleID=@ArticleID



کد بالا رو متناسب با برنامه ایت تغییر بده ( اسامی جدول ها ) .
برای نمایش دادن اطلاعات به نظر من یه کنترل DataGrid برای نمایش دادن تمام مقالات قرار بده که در هر سطر یک دکمه نمایش جزییات داشته باشه و در رویداد SelectedIndexChanged دستور SQl بالا رو اجرا کن و حاصلشو تو یه DetalsView نمایش بده ...

امیدوارم مفید باشه ...

b.paseban
یک شنبه 17 بهمن 1389, 17:12 عصر
با تشکر از شما دوست عزیز.
من از ارسال پارامتر با hyperlink و دریافت توسط query string استفاده کردم.
کد کار می کنه.ولی یه مشکلی که هست اینه که فیلدها چندین مرتبه تکرار میشن؟

cjNet
دوشنبه 18 بهمن 1389, 22:52 عصر
با تشکر از شما دوست عزیز.
من از ارسال پارامتر با hyperlink و دریافت توسط query string استفاده کردم.
کد کار می کنه.ولی یه مشکلی که هست اینه که فیلدها چندین مرتبه تکرار میشن؟

سلام دوست من :
اگه می خوای رکورد تکراری در کوئریت نداشته باشی کلمه distinct رو بعد از select اضافه کن و به جای * در دستور اسامی فیلد ها رو بنویس .( بهتر برای اینکه مشکلی پیش نیاد اسامی فیلد ها رو با جدول بنویسی مثلا : Maghalat. ArticleID

@@@@@