ورود

View Full Version : QUERY



raziyehbazargan
چهارشنبه 31 تیر 1388, 09:11 صبح
سلام ...
برای درج در یک جدول واسط باید از SELECT تو درتو استفاده کنم ...لطفا مشکل کد زیر را رفع کنید.مرسی

سه جدول دارم :
1 -بیمه(BIMEH) : کد بیمه-نام بیمه
2-خدمات(KHADAMAT) :کد خدمات- نام خدمات
3-جدول واسط(VASET : کد بیمه-کد خدمات

می خوام در دیتا گریدم ضرب دکارتی جدول بیمه و خدمات رو داشته باشم که باید از CROSS JOIN استفاده کنم علاوه بر این باید تمام کدهای بیمه و خدمات رو (که به صورت ضرب دکارتی نان داده می شود) در جدول واسط INSERT کنم.
اما دقیقا نمی دونم باید چه طور دستورش و بنویسم...

INSERT INTO TBL_VASET (ID_BIMEH,ID_KHADAMAT) VALUES

(SELECT ID_BIMEH,ID_KHADAMAT FROM (SELECT ID_BIMEH FROM TBL_Bimeh) CROSS JOIN (SELECT ID_KHADAMAT FROM TBL_Khadamat) TBL_Khadamat)")

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 09:57 صبح
همانطوری که در تاپیک قبلی نشان دادم می توانی عمل کنی دستور INSERT به چند شکل به کار می رود. حتمی الزامی نیست که از کلمه VALUES استفاده کنید.

شما می توانید با یک دستور SELECT چندین سطر را یکجا در جدول واسطتان درج کنید.
حتی می توانید چندین SELECT را با همدیگر UNION کنید سپس در جدول درج کنید.

raziyehbazargan
چهارشنبه 31 تیر 1388, 10:35 صبح
همانطوری که در تاپیک قبلی نشان دادم می توانی عمل کنی دستور INSERT به چند شکل به کار می رود. حتمی الزامی نیست که از کلمه VALUES استفاده کنید.

شما می توانید با یک دستور SELECT چندین سطر را یکجا در جدول واسطتان درج کنید.
حتی می توانید چندین SELECT را با همدیگر UNION کنید سپس در جدول درج کنید.

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

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 10:37 صبح
فکر کنم ابهام شما مربوط به Derived Table باشد نه؟

raziyehbazargan
چهارشنبه 31 تیر 1388, 10:55 صبح
فکر می کنم منظورتون اسم جدول هام باشه ولی من این کد رو که تو سی شارپ می نویسم عمل نمی کنه و خطا میده شاید نو syntax هاش مشکلی باشه؟؟

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 11:03 صبح
فکر می کنم منظورتون اسم جدول هام باشه ولی من این کد رو که تو سی شارپ می نویسم عمل نمی کنه و خطا میده شاید نو syntax هاش مشکلی باشه؟؟

منظورت از کد چیه آیا Query است. و اگر Query است چطور داخل سی شارپ می نوسید!

raziyehbazargan
چهارشنبه 31 تیر 1388, 11:16 صبح
منظورت از کد چیه آیا Query است. و اگر Query است چطور داخل سی شارپ می نوسید!

من این query رو تو query analyzer اس کیو ال هم که می نویسم خطا میده.


INSERT INTO TBL_Tarefeh_Bimeh_Khadamat
SELECT ID_BIMEH, ID_KHADAMAT FROM TBL_Type_Bimeh CROSS JOIN(SELECT ID_Khadamat FROM TBL_Khadamat)

خطاسم اینه البته به نظر من مشکلی نداره نمی دونم خطاش برای چیه؟
Server: Msg 170, Level 15, State 1, Line 2
Line 2: Incorrect syntax near ')'.

EffatBandehlou
چهارشنبه 31 تیر 1388, 11:21 صبح
دوست عزيز
دستور كراست درسته اما يه اشتباه بزرگ كردي اونم اينه كه بايد يه select بيروني بزني كه نتيجه كراست رو بده

INSERT INTO TBL_Tarefeh_Bimeh_Khadamat
Select * From (SELECT ID_BIMEH, ID_KHADAMAT FROM TBL_Type_Bimeh CROSS JOIN(SELECT ID_Khadamat FROM TBL_Khadamat))

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 11:26 صبح
احتمالا همان طوری که گفتم بعد از عبارت جلوی Cross Join باید به جدولت یک نام مستعار بدهی به این صورت:


CROSS JOIN (SELECT ...) AS d

محمد سلیم آبادی
چهارشنبه 31 تیر 1388, 12:18 عصر
یک راه ساده تر.
حتما جواب می دهد.



INSERT TBL_Tarefeh_Bimeh_Khadamat
SELECT ID_BIMEH, ID_KHADAMAT FROM TBL_Type_Bimeh CROSS JOIN TBL_Khadamat


حتی شما میتوانید بجای CROSS JOIN از کاراکتر کاما استفاده کنید.

raziyehbazargan
چهارشنبه 31 تیر 1388, 12:31 عصر
خیلی ممنون...البته هنوز همون پیغام و میده اما از اینکه وقت می ذاری و جواب میدی متشکرم....

raziyehbazargan
چهارشنبه 31 تیر 1388, 12:36 عصر
خیلی ممنون از اینکه کمکم کردی ....درست شد....:بوس: