PDA

View Full Version : مبتدی: دو كوئري insert در يك كوئري



alinaghiha
دوشنبه 05 بهمن 1388, 13:01 عصر
من ميخوام با يك كوئري در دو جدول متفاوت داده اي را اضافه كنم ايا امكانش هست
اين


تاريخ : 2008/01/01 رسيد كالاي تحويل به سالن توليد در آبانماه ، تحويلي به آقاي حسني
1
آچار(شماره كالا =12 )
تعداد 12
تحويل از سالن 3
2
چكش(شماره كالا=10)
تعداد 10
تحويل از سالن 4


يه جدول رسيد كالا دارم
و يك جدول ريز كالاهاي هر رسيد
ممنون

corona
دوشنبه 05 بهمن 1388, 14:11 عصر
والا تا جایی که من میدونم میتونی مستقیم با هر کوئری فقط توی یک table رکورد درج کنی . اگه به سینتکس دستور insert نگاه کنی insert into tablename values می بینی که نوشته table name نه tables name.

alinaghiha
سه شنبه 06 بهمن 1388, 01:44 صبح
همون دو كوئري در يك جدول مثالي كه فرستادم آچار و چكش رو در يك جدول add كنم

alinaghiha
سه شنبه 06 بهمن 1388, 09:13 صبح
دوستان لطفا راهنمايي كنيد:افسرده:

rmb_ali
سه شنبه 06 بهمن 1388, 10:06 صبح
شما میتونید در یک جدول بی نهایت رکورد در یک زمان و با یک دستور اینسرت کنی ولی برای اینسرت در دو جدول دوتا دستور باید بنویسی
برای مثال
insert into Dbtest Values (id,Name,Meghdar) Select id,Name,125 From List Where id<1000
دستور بالا تمام ای دی های که در جدول list کوچکتر از 1000 هستند رو در جدول DbTest وارد میکند که id و name از جدول لیست میاید و برای مقدار همه رو 125 میزنه

sia_2007
سه شنبه 06 بهمن 1388, 11:00 صبح
اگه SQL 2008 داری؛ میتونی ردیف های ریز کالا رو در #C داخل یک Data Table بریزی؛ بعد اون رو به عنوان آرگومان به SP پاس کنی.
سپس کل اون Data Table رو داخل SP با یه دستور داخل جدول بریزی.
البته باید تراکنش هم تعریف کنی ( منطقی تره ).
آموزشش تو اینترنت حتی به فارسی زیاده و نمیشه این جا نوشت.
ولی مفهوم اینه :
یک Type تعریف میکنی معادل جدول ریز کالا
بعد داخل SP ات یک آرگومان Read-Only از جنس اون Type داشته باشی
سپس یه Data Table معادل اون Type تو #C
و سپس Data Table رو به همراه آرگومان های جدول اصلیت پاس میکنی.
سپس ردیف جدول اصلی رو Insert میکنی؛ بعدش با SELECT Insert to کل ریز کالا رو یک جا میریزی داخل جدول ریز کالا
موفق باشی

alinaghiha
سه شنبه 06 بهمن 1388, 12:54 عصر
بالاخره حل شد
كدش رو ميزارم شايد بعدا سوال كسي ديگه باشه


INSERT INTO receipt_rows
(receipt_id, good_id, section_id,good_count)
SELECT 6,12, 3,12
UNION ALL
SELECT 6, 10, 4,10


حالا اگه از یه جدول دیگه که رکوردها یکی در میان تکراری هستند بخوام فقط رکورد های فرد را add کنم چطوره