sql query replace

پرسیده شده
فعالیت 1003 روز پیش
دیده شده 344 بار
0

سلام خسته نیاشید 
من میخوام در جدول رابط از مقادیر مثلا ۵ تا ۳ شو جایگزین کنم 
در جدول  product_discounts آنهایی discount_id برابر با یک عددی هست رو بگیره 
و مثلا
 ۲ از ۵ تا رو حذف بکنه 
۳ تا مقدار هم اضافه بکنه 
۱ رو آپدیت بکنه 
 

باید حذف بکنم یک بار همه رو که برابر با مقدار  discount_id و بعد مجدد ایجاد کنم یا راه دیگه ای هم هست ؟
 

 

فایل پیوست

Mehrzad Tajkarimi
Mehrzad Tajkarimi

13 مرداد 00

2
حذف شده

درود

واسه آپدیت کردن که باید کوئری update  بزنید اما برای اینکه مقادیر جدید درون یک جدولی که رابطه چند به چند داره، مثل همین دسته بندی انتخابی که شما دارید،‌ آیدی تمامی گزینه های انتخاب شده رو بگیرید و بعد یک کوئری بزنید که هر آیدی که سمت شما اومد و داخل جدول نبود، مقادیری که داخل جدول نیستند حذف بشه و آیدی هایی که سمت شما اومده insert بشه

 

کوئری شما تقریبا یه همچین چیزی میشه که ابتدا آیدی هایی که در بین آیدی های شما در request دارید نباشند حذف میشن 

delete from `table` WHERE `discount_id` = 1 and `aaa_id` NOT IN (1,2,3,4,6) 

و بعد مقادیر جدید که همون آیدی های جدید هستن insert میشن

INSERT INTO table(discount_id, aaa_id)
VALUES 
   (1,1),
   (1, 2),
    ...
   (1, 10);
فایل پیوست

امیر صالحی

توسط

امیر صالحی

13 مرداد 00

حذف شده
جالب بود فقط یه سوال مزیت استفاده از NOT IN و نگه داشتن مقادیری موجود رو متوجه نشدم در واقع حذف همه مقادیر ساده تر نبود
Mehrzad Tajkarimi

13 مرداد 00

حذف شده
مزیتش اینکه که مقادیر جدیدی که میخواید میخواید insert کنید اگه مقادیر قبلی توی این لیست جدید شما نبود حذف میشن، توی روشی که شما گفتید شما خودتون میایید همه رو حذف میکنید و بعد جدیدارو insert میکنید ولی این میاد میبینه اگه مقادیری که شما دارید و میخواید insert کنید،‌ هرچیزی غیر از اونو delete میکنه
امیر صالحی

14 مرداد 00