PDA

View Full Version : درج در جدول



raziyehbazargan
سه شنبه 30 تیر 1388, 14:07 عصر
من 3 جدول دارم:

جدول 1:کد بیمه - نام بیمه
جدول2: کد خدمات- نام خدمات-هزینه خدمات
جدول3: کد بیمه - کد خدمات - درصد بیمه

سوالم اینه:پس از درج یه رکورد جدید در جدول بیمه (جدول1) ، تعداد رکوردهای جدول 2 را بدست بیاورد و در جدول 3 به این صورت درج شود(برای هر کد بیمه تمام خدمات درج شود)

خروجی:::>>>>> به عنوان مثال:بیمه1 خدمات1
بیمه1 خدمات2
بیمه1 خدمات2

بیمه2 خدمات1
بیمه2 خدمات2
و...

فکر کنم باید از حلقه استفاده کنم.ممنون میشم راهنمایی کنید.

محمد سلیم آبادی
سه شنبه 30 تیر 1388, 23:21 عصر
سلام.
اگر من درست سوال را متوجه شده باشم براحتی با استفاده از CROSS JOIN مشکل شما حل خواهد شد.



INSERT INTO table_3
SELECT bimehID,KhadamatID FROM
(SELECT bimehID=@bimehID)AS derivedTable1
CROSS JOIN(SELECT KhadamatID FROM Khadamat)derivedTable2


یا


INSERT table_3 (bimehID,KhadamatID)
SELECT bimehID,KhadamatID
FROM Khadamat
cross join(SELECT bimehID='101') d


من این کد را در یک DB آزمایشی امتحان کرده ام.




جدول خدمات


نام خدمات
----------------
خدمات 1
خدمات 2


نتیجه جدول 3 بعد از درج اولین بیمه


جدول 3


نام بیمه نام خدمات
---------------------
بیمه 1 خدمات 1
بیمه 1 خدمات 2


درج یک خدمات جدید


جدول خدمات


نام خدامات
-----------
خدمات 1
خدمات 2
خدمات 3


نتیجه جدول شماره 3 پس از درج دومین بیمه

جدول 3


نام بیمه نام خدمات
------------------
بیمه 1 خدمات 1
بیمه 1 خدمات 2

سطر های جدید

بیمه 2 خدمات 1
بیمه 2 خدمات 2
بیمه 2 خدمات 3

raziyehbazargan
چهارشنبه 31 تیر 1388, 07:22 صبح
مرسی از جوابتون
فقط یه سوال برام پیش اومده که بعد از درج خدمان جدید مثلا بیمه3 بیمه1 به ازای خدمات3 در نظر گرفته می شود یا خیر؟

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 09:44 صبح
خیر. تنها خدماتی فعلی (خدمات فعلی موجود در جدول شماره دو) در بیمه جدید در نظر گرفته می شود.

raziyehbazargan
چهارشنبه 31 تیر 1388, 10:20 صبح
نیازی به value نداره؟؟؟خطا میده....


INSERT INTO table_3
SELECT bimehID,KhadamatID FROM
(SELECT bimehID=@bimehID)AS derivedTable1
CROSS JOIN(SELECT KhadamatID FROM Khadamat)derivedTable2

raziyehbazargan
چهارشنبه 31 تیر 1388, 10:22 صبح
ID_BIMEH در جدول از نوع AUTO هست در کد بالا ID_BIMEH@ مقدار فیلد رو بر میگردونه؟؟

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 10:32 صبح
اینو امتحان کن.


INSERT INTO TBL_VASET
SELECT ID_BIMEH, ID_KHADAMAT FROM KHADAMAT CROSS JOIN
(SELECT ID_BIMEH FROM BIMEH) AS D

raziyehbazargan
چهارشنبه 31 تیر 1388, 10:52 صبح
اینو امتحان کن.


INSERT INTO TBL_VASET
SELECT ID_BIMEH, ID_KHADAMAT FROM KHADAMAT CROSS JOIN
(SELECT ID_BIMEH FROM BIMEH) AS D



بعد از SELECT ID_BIMEH FROM BIMEH نیازی نیست اسم جدول آ.رده بشه<<

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 11:00 صبح
جداول مشتق شده یا Derived Table حتما باید یک نام مستعار (Alias) داشته باشند!
SELECT ID_BIMEH FROM BIMEH در واقع یک جدول مشتق شده است.