با سلام دوستان
من تو برنامه چند گروه تعریف کردم حالا میخوام از هر گروه به صورت تصادفی یک سوال تولید کنه
به نظر شما فیلد گروه را در جدول سوالات قرار بدم یا یک جدول دیگه براش ایجاد کنم و join کنم چه کار کنم؟
باید چکار کرد ؟
ممنون
با سلام دوستان
من تو برنامه چند گروه تعریف کردم حالا میخوام از هر گروه به صورت تصادفی یک سوال تولید کنه
به نظر شما فیلد گروه را در جدول سوالات قرار بدم یا یک جدول دیگه براش ایجاد کنم و join کنم چه کار کنم؟
باید چکار کرد ؟
ممنون
دوستان کسی میتونه راهنمایی کنه
من در برنامه ممکنه چند تا سوال وارد یک گروه بشه حالا میخوام از هر گروه یک سوال داشته باشم باید چکار کنم؟
چه کوئری را باید به کار ببرم؟
لطفا راهنمایی کنید ممنون میشم
یک جدول مجزا برای گروه. یک جدول واسط برای تعیین گروه هر سوال.
گروهبندی کنید و توسط rownumber به رکوردهای هر گروه شماره ردیف بدید و ردیف اول از هر گروه رو انتخاب کنید
http://stackoverflow.com/a/6841644
برای تصادفی بودن هم کافیه مرتب سازی بعد از پارتیشن بندی رو تصادفی انجام بدید طبق لینک زیر
http://stackoverflow.com/a/19419
ممنون آقای افراد
منظور از این قسمت چیه میشه توضیح بدهید
چطوری شماره ردیف بدیم؟داده های ما توسط کاربر وارد میشه مثلا نام هر گروه توسط کاربر به جدول گروه ها ثبت میشهتوسط rownumber به رکوردهای هر گروه شماره ردیف بدید و ردیف اول از هر گروه رو انتخاب کنید
میشه این قسمت را با کد توضیح بدید
من از این اسکریپت استفاده میکنم
USE [exam]
GO
/****** Object: StoredProcedure [dbo].[ReportQuestionByGroup] Script Date: 18/12/2016 17:39:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[ReportQuestionByGroup]
@groupid int
as
Select tbl_soal.GroupID , questest , ans ,ans1,ans2,
ans3 from tbl_soal INNER JOIN tbl_group
on tbl_soal.GroupID = tbl_group.GroupID where tbl_soal.GroupID = @groupid
SqlConnection con1 = new SqlConnection(strCon);
SqlDataAdapter da2 = new SqlDataAdapter("ReportQuestionByGroup", con1);
da2.SelectCommand.CommandType = CommandType.StoredProcedure;
dtAllQuestion = new DataTable();
da2.SelectCommand.Parameters.AddWithValue("@GroupI D", comboBox1.SelectedValue);
da2.Fill(dtAllQuestion);
label4.Text = dtAllQuestion.Rows[QN]["questest"].ToString();
buttonX6.Text = dtAllQuestion.Rows[QN]["ans"].ToString();
buttonX7.Text = dtAllQuestion.Rows[QN]["ans1"].ToString();
buttonX8.Text = dtAllQuestion.Rows[QN]["ans2"].ToString();
buttonX9.Text = dtAllQuestion.Rows[QN]["ans3"].ToString();
ولی موقع اجرا به @groupid گیر میده اینم پیغام خطاش
{"Procedure or function 'ReportQuestionByGroup' expects parameter '@groupid', which was not supplied."}
SELECT ROW_NUMBER() OVER (PARTITION BY GroupId ORDER BY RANDOM() LIMIT 1) AS rn,
Questions.QuestionText
FROM Groups
JOIN Questions ON Groups.GroupId = Questions.GroupId
WHERE rn=1