PDA

View Full Version : سوال: انتخاب و ایجاد رکوردها با توجه به چند جدول دیگه



abdonsd
شنبه 16 آبان 1388, 01:44 صبح
سلام ی برنامه برا ی مدرسه دارم مینویسم برا ورود نمرات دانش آموزان -البته با asp.net- که به یه مشکل خوردم لطفا کمکم کنید: اینم صورت مشکل

مدرسه ما یکسری مقطع تحصیلی (year) –مثل سال اول ، سال دوم و ...-
و یکسری رشته (field) -مثلرشته کامپیوتر، رشته برق و ...-
و البته هر کدوم از این رشته ها میتونن چند تا کلاس باشن



مشکل اینجاست که برای هر یک نفر از دانش آموزان جدول student باید با توجه به دروس (lesson)ی که مربوط به کلاس و رشته و مقطع تحصیلیش است یک رکورد در جدول نمرات rate ایجاد بشه.



حالا سوال اینجاست که این رکورد چه موقع و چطور –با چه دستوری- وارد بشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟

جداولی که استفاده کردم بشکل زیر هست:

جدول سال-رشته: yf_tb


Field

year

id




جدول سال-رشته-درس yfl_tb


lesson

Field

year

id




جدول سال-رشته-کلاس yfc_tb


class

field

Year

Id




جدول دانش آموز student_tb


St_class

St_field

St_year

St_pass

St_name

St_id




,و جدول نمرات rate


R3

R2

R1

lesson

St_id

id

abdonsd
شنبه 16 آبان 1388, 01:46 صبح
r1, r2 و r3 نمرات هستند که بععدا وارد میشن -هر وقت مدیر بخاد-

محمد سلیم آبادی
شنبه 16 آبان 1388, 08:08 صبح
برای هر یک نفر از دانش آموزان جدول student باید با توجه به دروس (lesson)ی که مربوط به کلاس و رشته و مقطع تحصیلیش است یک رکورد در جدول نمرات rate ایجاد بشه.

آیا مثلا لیست دروس سال دوم رشته کامپیوتر برای کلاس X با لیست دروس سال دوم رشته ی کامپیتور کلاس Y فرق دارد؟


حالا سوال اینجاست که این رکورد چه موقع و چطور –با چه دستوری- وارد بشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟
چه موقع: مثلا بعد از ثبت نام دانش آموزان برای سال جدید.
چطور با چه دستوری:
ضرب دکارتی یعنی سطرهای جدول دانش آموز * سطرهای جدول دروس


insert into rate
select R3 = Null,
R2 = Null,
R1 = Null,
l.lesson,
s.st_id
from yfl_tb as l
Cross Join student_tb as s
Where l.field = s.st_feild
And l.year = s.st_year

abdonsd
شنبه 16 آبان 1388, 09:15 صبح
[quote=msalim;842471]آیا مثلا لیست دروس سال دوم رشته کامپیوتر برای کلاس X با لیست دروس سال دوم رشته ی کامپیتور کلاس Y فرق دارد؟


نه فرقی نمیکنه، اگه رشته و مقطع تحصیلی یکسان باشه دروس هم یکسانه

abdonsd
شنبه 16 آبان 1388, 14:33 عصر
آیا مثلا لیست دروس سال دوم رشته کامپیوتر برای کلاس


insert into rate
select R3 = Null,
R2 = Null,
R1 = Null,
l.lesson,
s.st_id
from yfl_tb as l
Cross Join student_tb as s
Where l.field = s.st_feild
And l.year = s.st_year


قسمت selectرو تست کردم درست همون چیزی رو که میخاستم داد
اما موقع insert کردن ارور میده
لطفا راهنمایی کنید.

محمد سلیم آبادی
شنبه 16 آبان 1388, 17:53 عصر
پیام error را ارسال کنید.
ممکنه ستون های r1, r2, r3 نتوانند در خود Null ذخیره کنند (در واقع nullable نباشند)
یا ممکنه id جدول rate از نوع identity نباشد.

abdonsd
شنبه 16 آبان 1388, 21:23 عصر
پیام error را ارسال کنید.
ممکنه ستون های r1, r2, r3 نتوانند در خود Null ذخیره کنند (در واقع nullable نباشند)
یا ممکنه id جدول rate از نوع identity نباشد.


چرا ستون ها میتونن null باشن
و id هم از نوع identitiy هست

abdonsd
شنبه 16 آبان 1388, 21:24 عصر
میشه گرامر کامل ورود یه جدول در جدول دیگه رو بگید؟

محمد سلیم آبادی
شنبه 16 آبان 1388, 22:18 عصر
اینو امتحان کن، ممکنه ترتیب ستون ها با مقادیر match نشده بودند.


insert into rate (r3, r2, r1, lesson, st_id)
select R3 = Null,
R2 = Null,
R1 = Null,
l.lesson,
s.st_id
from yfl_tb as l
Cross Join student_tb as s
Where l.field = s.st_feild
And l.year = s.st_year




میشه گرامر کامل ورود یه جدول در جدول دیگه رو بگید؟

syntax عبارت insert select :
insert into target_table
select query