PDA

View Full Version : خواندن فیلد مشترک و insert در چند جدول



federrer
شنبه 28 آبان 1390, 00:01 صبح
یه سوال پیش پا افتاده دارم:

جدول مادر که اسمش T1 هست شامل فیلد ID و چند فیلده.
جدول T2 و T3 هم شامل همون فیلد ID و چند فیلد دیگن .

مرحله اول : یک رکورد رو به آسونی در T1 ذخیره میکنیم و یک ID ثبت میشه.مشکلی نیست.
مرحله دوم : حالا میخوایم ID ثبت شده در T1 رو بخونیم و از همون مقدار بعنوان ID در رکوردهایی که در T2 و T3 ثبت میشن استفاده کنیم .

از کدهای زیر استفاده کردم ولی علاوه بر رکوردی که در حال ثبتش هستیم ، همین رکورد با ID رکورد قبل هم ثبت میشه!!!!!





INSERT INTO T2(ID,A2,B2)
SELECT ID,@AA,@BB
FROM T1
Where T1.ID=T2.ID


INSERT INTO T3(ID,A3,B3)
SELECT ID,@CC,@DD
FROM T1
Where T1.ID=T3.ID

مرتضی تقدمی
شنبه 28 آبان 1390, 01:01 صبح
از کدهای زیر استفاده کردم ولی علاوه بر رکوردی که در حال ثبتش هستیم ، همین رکورد با ID رکورد قبل هم ثبت میشه!!!!!



سلام
اینو میشه یک توضیح بیشتر بدی یعنی چی؟ من متوجه نشدم.
ممنون

federrer
شنبه 28 آبان 1390, 06:00 صبح
مشخصات اصلي ركورد اول درمرحله اول در T1 و مشخصات فرعي ركورد اول در مرحله دوم در T2و T3با ID=1234 ثبت مي كنيم.

باز مشخصات اصلي ركورد دوم رو در مرحله اول با ID=4567 در جدول T1 ثبت ميكنيم و مشكلي نداريم.


. در مرحله دوم واسه ركورد دوم ،2تا ركورد با ID=1234 و ID=4567 ثبت ميشه !!!!!!!!!!!!

baktash.n81@gmail.com
شنبه 28 آبان 1390, 12:37 عصر
سلام

مشکل مربوط به شرطی که تو دستور select وجود داره می شه

خوب دفعه سوم هم سه تا رکورد می شه دفعه چهارم هم چهارتا رکورد الی آخر ...

نمی دونم شرایط اجازه می ده بهتون که از Scope_Identity استفاده کنید که مقدار identity جدولی که توش Insert کردین رو بر می گردونه ...

federrer
شنبه 28 آبان 1390, 13:30 عصر
همانطور که متوجه شدید میخوام ID که در مرحله اول در T1 ریختم رو در مرحله دوم بخونم و همراه با ریختن سایر فیلدها در T2 و T3 بریزم.

در مورد Scope_Identity میتونید یه مثال برام بزارید . ممنون میشم

baktash.n81@gmail.com
یک شنبه 29 آبان 1390, 08:56 صبح
T1 جدولی هست که فیلد کلید اصلیش از نوع Identity می باشد.

بعد از انجام عمل insert مقدار Scope_Identity رو درون یک متغیر می ریزم و در دستور Insert بعدی ازش استفاده می کنم.


declare @T1Identity int
insert into T1 (f1,f2,...) values (v1,v2,...)
@T1Identity = scope_identity()
insert into T2 (f1,f2,...) values (@T1Identity,v1,v2,...)
insert into T3 (f1,f2,...) values (@T1Identity,v1,v2,...)

federrer
یک شنبه 29 آبان 1390, 18:09 عصر
ممنون از راهنمایی شما

يه مطلب خيلي مهم رو بايد ميگفتم ،فيلد ID از نوع int و كيلد اصلي هست اماچون ما كد پرسنلي افراد رو توش ميريزيم كه به ترتيب مقدارشون زياد نميشه ، نميتونه ار نوع Identity بشه !!!

يعني عملا نيمتونيم از @@Identity وُScop_identity استفاده كنيم.
چون به ترتيب هم نيست نميشه از تابع MAX استفاده كرد.