PDA

View Full Version : عملیات درج و حذف بر روی نتیجه یک کوئری



JaVa
یک شنبه 24 دی 1391, 22:04 عصر
با سلام.

اگه امکانش هست دوستان با یه مثال ساده این عملیات رو انجام بدهند :

عملیات درج و حذف بر روی نتیجه یک کوئری :
مثلا :

1- مشخصات افرادی که کتاب های خود را تحویل داده اند از جدول امانات حذف شوند ؟

2- مشخصات افرادی که کتاب امانات گرفته اند را در یک جدول جدید اضافه کند ؟

با تشکر.

محمد سلیم آبادی
یک شنبه 24 دی 1391, 22:10 عصر
سلام،
ساده بگم، میشه با CTE عملیات درج، حذف و بروز رسانی رو ساده کرد.
ضمن اینکه دستور INSERT یک فرمت دیگه داره شبیه به این INSERT INTO table_name SELECT ... FROM ... WHERE
همچنین دستورات DELETE و UPDATE از JOIN و Subquery هم پشتیبانی میکنند.
شما بهتره دقیق مشخصات جداولتون(DDL اشون رو) همراه با داده های نمونه ارسال کنید تا دقیق بشه دستور INSERT و DELETE مورد نیاز رو پیشنهاد داد.

zhr.rezae66i
سه شنبه 10 اردیبهشت 1392, 15:13 عصر
سلام
چطور میتونم نتیجه ی select زیر رو insert کنم در یک جدول دیگه
SELECT ContactTypeID, Name, ModifiedDate
FROM OPENROWSET( BULK 'd:\5.txt',
FORMATFILE = 'd:\15Format.Fmt',
FIRSTROW = 1,
MAXERRORS = 5)
AS ContactType

morteza271
سه شنبه 10 اردیبهشت 1392, 15:33 عصر
سلام
چطور میتونم نتیجه ی select زیر رو insert کنم در یک جدول دیگه
SELECT ContactTypeID, Name, ModifiedDate
FROM OPENROWSET( BULK 'd:\5.txt',
FORMATFILE = 'd:\15Format.Fmt',
FIRSTROW = 1,
MAXERRORS = 5)
AS ContactType

با استفاده از کرسرها (CURSOR) میتونید اینکار رو انجام بدین.
در مورد کرسرها جستجو کنید...

zhr.rezae66i
سه شنبه 10 اردیبهشت 1392, 22:09 عصر
کرزر یجور پیمایش روی فیلدها میکنه تک تک میخونه
میشه علت اینکه اینجا باید با کرزر کار کنمو برام توضیح بدی
ممنون

morteza271
چهارشنبه 11 اردیبهشت 1392, 21:23 عصر
کرزر یجور پیمایش روی فیلدها میکنه تک تک میخونه
میشه علت اینکه اینجا باید با کرزر کار کنمو برام توضیح بدی
ممنون
به نظرتون روش دیگه ای هست!!!
اینطوری عمل میکنه :
اول همه رو لود میکنه و بعد یکی یکی توی جدول دوم ذخیره میکنه. مزیتش اینه که میتونید بر روی سطرهای Select تغییراتی نیز بدین و بعد ذخیره کنید توی جدول دوم.
من نمیدونم روش دیگه ای هم هست یا نه و به نظر خودم بهترین روش رو خدمتتون گفتم...
موفق باشید

حمیدرضاصادقیان
چهارشنبه 11 اردیبهشت 1392, 23:43 عصر
سلام.
هیچ نیازی به استفاده از Cursor نیست.
شما دوتا راه دارید.
یا اینکه جدول وجود داره یا اینکه میخواهید داخل یک جدول جدید قرار بدید.

برای اینکه داخل یک جدولی که وجو داره اضافه کنید از دستور Insert Into میتونید اینکارو بکنید
به عنوان مثال :

Insert Into Table1(ContactTypeID, Name, ModifiedDate)
SELECT ContactTypeID, Name, ModifiedDate
FROM OPENROWSET( BULK 'd:\5.txt',
FORMATFILE = 'd:\15Format.Fmt',
FIRSTROW = 1,
MAXERRORS = 5) AS ContactType


حالت دوم :

SELECT ContactTypeID, Name, ModifiedDate
Into Table2
FROM OPENROWSET( BULK 'd:\5.txt',
FORMATFILE = 'd:\15Format.Fmt',
FIRSTROW = 1,
MAXERRORS = 5) AS ContactType

s_ahmadneya
پنج شنبه 12 اردیبهشت 1392, 07:59 صبح
سلام جناب صادقی
فرض کنید جدولی وجود دارد ومیخواهیم اطلاعات را با روشی که فرمودید در آن وارد نماییم
اگر فقط یک سطر داده های داشته باشد که خطا بدهد مثلا رشته باشد بخواهیم در فیلد نامبر وارد نمایید کل دستور اجرا نمی شود .اگر بخواهیم ازش رد شود و بقیه سطرهای را وارد جدول جدید نماید باید چکار کنیم

morteza271
پنج شنبه 12 اردیبهشت 1392, 09:48 صبح
سلام.
هیچ نیازی به استفاده از Cursor نیست.
شما دوتا راه دارید.
یا اینکه جدول وجود داره یا اینکه میخواهید داخل یک جدول جدید قرار بدید.

برای اینکه داخل یک جدولی که وجو داره اضافه کنید از دستور Insert Into میتونید اینکارو بکنید
به عنوان مثال :

Insert Into Table1(ContactTypeID, Name, ModifiedDate)
SELECT ContactTypeID, Name, ModifiedDate
FROM OPENROWSET( BULK 'd:\5.txt',
FORMATFILE = 'd:\15Format.Fmt',
FIRSTROW = 1,
MAXERRORS = 5) AS ContactType


حالت دوم :

SELECT ContactTypeID, Name, ModifiedDate
Into Table2
FROM OPENROWSET( BULK 'd:\5.txt',
FORMATFILE = 'd:\15Format.Fmt',
FIRSTROW = 1,
MAXERRORS = 5) AS ContactType

مزیت استفاده از کرسرها اینه که میتونید بر روی سطرهای Select تغییراتی نیز بدین و بعد ذخیره کنید توی جدول دوم.

حمیدرضاصادقیان
دوشنبه 16 اردیبهشت 1392, 14:57 عصر
در این حالت میتونید با استفاده از Where فیلدهای مورد نظر و رکوردهای مورد نظر رو درج کنید و اونهایی که مقادیر نامعتبر دارند رو نیارید.