ورود

View Full Version : سوال: ایجاد رکورد با توجه مقادیر ذخیره شده در پایگاه داده



persian_lion
دوشنبه 18 تیر 1403, 12:13 عصر
سلام
من دو جدول دارم که شامل:
جدول 1:


type
name
id



و جدول 2:


name2
name1
id



روش کار:
دو رکورد در جدول یک دخیره می شود:



type
name
id


user
ali
1


user
mohammad
2



حالا در جدول دو می بایست رکود به صورت زیر ذخیره شود.


name2
name1
id


mohammad
ali
1



به همین ترتیب وقتی هر رکوردی که در جدول یک اضافه می شود بررسی می کند که آیا در جدول دو موجود است یا خیر. و در صورت موجود نبودن ذخیره می کند.
رکورد سه در جدول یک:



type
name
id


user
ali
1


user
mohammad
2


user
reza
3



جدول 2:



name2
name1
id


mohammad
ali
1


reza
ali
2


mohammad
reza
3


فقط می باست بررسی کند که این موارد تکراری نباشد.
برای مثال وقتی ali-mohammad ذخیره شده mohammad-ali یک گزینه تکراری است و نباید ذخیره کند.

پیشاپیش ممنون

mazoolagh
دوشنبه 18 تیر 1403, 20:23 عصر
سلام و روز خوش

الان این یک مسئله ترکیب آمار هست؟
یعنی جدول 2 قرار هست همه حالت های انتخاب 2 از n (n=تعدادکل nameها) باشه؟

persian_lion
سه شنبه 19 تیر 1403, 10:22 صبح
سلام به شما
تقریبا میشه گفت بله.
حلقه ای که من نوشتم به صورت زیر هست و ذخیره سازی را انجام میده اما اون بحث تکراری بودن که انتهای سوال ذکر کردم را نتونستم حل کنم:


foreach ($names as $name) {
foreach ($names as $cu) {
if ($name->name != $cu->name) {
$wpdb->insert($table, array(
'name1' => $name->name,
'name2' => $cu->name,
));
}
}
}

mazoolagh
چهارشنبه 20 تیر 1403, 20:16 عصر
من با wpdb و متدهاش آشنایی ندارم (مثل همین insert) - ولی اینجور دیده میشه که دیتابیس وردپرس باشه.

2 راه به نظر میرسه:
1- در if و قبل از insert ، با همون متدهای wpdb (که حتما چیزی شبیه select هم داره) چک کنین که این اسمها در table2 هست یا نه؟

2- در mysql یک stored procedure بنویسین که name1 و name2 رو بگیره
و table2 رو چک کنه
و اگر تکراری نبود insert کنه و true برگردونه
در اگر تکراری بود false

این یکی رو میتونم کمکتون کنم اگه مشکل داشتین.

persian_lion
شنبه 23 تیر 1403, 10:18 صبح
من با wpdb و متدهاش آشنایی ندارم (مثل همین insert) - ولی اینجور دیده میشه که دیتابیس وردپرس باشه.

2 راه به نظر میرسه:
1- در if و قبل از insert ، با همون متدهای wpdb (که حتما چیزی شبیه select هم داره) چک کنین که این اسمها در table2 هست یا نه؟

2- در mysql یک stored procedure بنویسین که name1 و name2 رو بگیره
و table2 رو چک کنه
و اگر تکراری نبود insert کنه و true برگردونه
در اگر تکراری بود false

این یکی رو میتونم کمکتون کنم اگه مشکل داشتین.
ممنون از شما لطف کردید.