PDA

نسخه کامل مشاهده نسخه کامل : چند جدول و stored procedure



farnoosh
04-09-2008, 18:38
سلام
من 4 تا جدول دارم که می خوام تو یه stored procedure یه سری اطلاعات از اینا بگیرم. جدول هام به صورت زیره:
question table
questionId
questionSubject
forumId
userId

Forumtable
forumId
forumName

answerTable
answerId
answerSubject
userId
questionId
forumId

usersProfile
UserId
username
questionSubject و انجمن مربوطه (forumName)حالا می خوام و نام کاربری که این سوال را قرار داده (username)و همچنین آخرین پاسخ(answerSubject) به همراه نام کاربری که این پاسخ را قرار داده(username)و تعداد پاسخ هایی که که برای این سوال قرار داده شده را بگیرم.
این stored procedure رو نوشتتم
CREATE PROCEDURE GetPost

as
SELECT dbo.questionTable.questionSubject, dbo.questionTable.questionDate, dbo.forumProfile.forumName, dbo.UsersProfile.username AS qUser,
dbo.answerTable.answerSubject, UsersProfile_1.username AS aUser, dbo.answerTable.answerId
FROM dbo.questionTable INNER JOIN
dbo.forumProfile ON dbo.questionTable.forumId = dbo.forumProfile.forumId INNER JOIN
dbo.answerTable ON dbo.questionTable.questionId = dbo.answerTable.questionId INNER JOIN
dbo.UsersProfile ON dbo.questionTable.userId = dbo.UsersProfile.UserId INNER JOIN
dbo.UsersProfile UsersProfile_1 ON dbo.answerTable.userId = UsersProfile_1.UserId

ولی اگه سوالی پاسخی نداشته باشه نشون نمی ده و زمانی ک بخوام از top برای answerSubject استفاده کنم و همچنین از count برای answerId،error mide
میشه لطفا کمکم کنید
فقط این دو قسمتو نداره و اینکه سوال بی پاسخ رو نشون نمی ده

_H2_
05-09-2008, 00:26
سلام
سوالتان را یاد داشت کردم، بررسی میکنم و جواب میدهم.
ولی فعلاً...

در خصوص ساخت Forum با ASP.Net یک تاپیک با دیتابیس یک کم کاملتر داشتیم.
بد نیست یک سری هم به ان تاپیک بزنید.
forum.p30world.com/showthread.php?t=219657

میتوانید نمونه موجود را به عنوان یک بستر پایه کامل کنید.

_H2_
05-09-2008, 15:28
سلام
به نظر من دیتابیس را اصلاح کنید بد نیست.

بعد هم برای این مقادیر پر کاربرد و پر دید در یک پروزه عملی و بزرگ و حجیم که احتمال کاهش کارائی و سرعت دارد،
بهتر است کمی از قوانین نرمال سازی پا را فراتر گذاشت و انها را کش کرد و مثلاً در questiontable یک فیلد داشت که آخرین id جواب یا حتی تعداد جواب ها را نگاه دارد. (همین vBulletin هم اینکار را میکند، پس چندان غیر معقول نیست)

راه حل شما این دستور SQL سنگین است که خودش گویا است.

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

farnoosh
05-09-2008, 17:14
سلام
واقعا ممنونم ازتون. تو خیلی از صفحاتم این مدل کوئری نیاز داشتم.
با توجه به اینکه وقت زیادی واسه تکمیل پروژه ام ندارم، متاسفانه امکان تغییر نیست.ولی از راهنماییتون ممنونم:20: