PDA

View Full Version : سوال: حذف اطلاعات چند جدول بر اساس خروجی یک Select



baran_mehr
یک شنبه 11 بهمن 1388, 17:15 عصر
چطور میتونم با استفاده از مقدار خروجی یک Select اطلاعات رو از 2 یا چند جدول حذف کنم

AminSobati
یک شنبه 11 بهمن 1388, 23:49 عصر
هر دستور Delete در آن واحد یک جدول رو تحت تاثیر قرار میده، مگر اینکه Trigger نوشته باشین

baran_mehr
دوشنبه 12 بهمن 1388, 08:13 صبح
یعنی نمیشه مثلا تو قسمت from چند تا جدول نام برد؟
delete from a.,b

محمد سلیم آبادی
دوشنبه 12 بهمن 1388, 19:14 عصر
یعنی نمیشه مثلا تو قسمت from چند تا جدول نام برد؟
delete from a.,b

خیر،
این امکان وجود دارد که داده ها بر اساس یک جدول دیگر حذف شوند (delete using joins) ولی هم زمان نمی شود با یک دستور delete از چند جدول داده حذف کرد.

baran_mehr
دوشنبه 12 بهمن 1388, 22:29 عصر
ایا نمیشه طوری کد نوشت که رکوردهای دو جدول به شرط تساوی حذف شوند؟

محمد سلیم آبادی
سه شنبه 13 بهمن 1388, 00:32 صبح
اگر منظورتان این باشد که داده ها (سطرهای) مشترک دو جدول حذف شوند. این کار را نمی شود با یک دستور Delete یا Merge انجام داد.

راهی را که به نظرم می رسد این است که یک ستون به دو جدول مذکور به نام Flag اضافه کنید که مقدار پیشفرض 0 داشته باشند. سپس با دستور Update مقدار فیلد Flag سطرهایی که مشترک هستند را برابر با 1 کنید سپس با یک دستور Delete تمام سطرهایی که دارای فلگ 1 هستند را حذف کنید.

baran_mehr
سه شنبه 13 بهمن 1388, 08:02 صبح
دستور update به صورت هم زمان دروی دو تا جدول کار میکنه که مثلا رکوردهای مشترکشون فلگش 1 بشه

محمد سلیم آبادی
سه شنبه 13 بهمن 1388, 08:20 صبح
خیر، به طور مجزا از دو دستور update بر روی دو جدول استفاده می شود.

بطور مثال:


update table_1
set flag = 1
where exists
(select *
from table_2
where table_1.id = table_2.id)

update table_2
set flag = 1
where exists
(select *
from table_1
where table_1.id = table_2.id)