• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

راهنمایی برای جستجوی عبارت در پایگاه داده

appledandy

Registered User
تاریخ عضویت
26 اکتبر 2010
نوشته‌ها
129
لایک‌ها
12
من یک جدول به نام keyword دارم که شامل id , keyword هست می خوام وقتی یک عبارت می نویسم باید دوتا id رو پیدا کنه و پست ها رو که توی جدول دیگری هست رو نشون بدون تکرار
لطفا راهنمایی کنید
خیلی فوری
 

appledandy

Registered User
تاریخ عضویت
26 اکتبر 2010
نوشته‌ها
129
لایک‌ها
12
من یک سری کلمه های کلیدی رو توی یک تیبل دارم و می خوام وقتی یک عبارت رو تایپ می کنم بره آی دی های اون رو بیاره و لینک هاش که توی یک تیبل دیگر هست رو پیدا بکنه و تکرار لینک نداشنه باشه
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
ارتباط تبیل دوم با اول با چی هست اگر با keyword هست:
PHP:
SELECT keyword.id, table2.link FROM `keyword` INNER JOIN table2 ON table2.keyword=keyword.keyword 
WHERE keyword.keyword LIKE '%SEARCHED_TEXT_HERE%' GROUP BY table2.link;
 

appledandy

Registered User
تاریخ عضویت
26 اکتبر 2010
نوشته‌ها
129
لایک‌ها
12
با ای دی هست و هر کلید واژه فقط یک واژه هست حالا اگر دو تا واژه جستجو کنم چه جوری
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
از OR استفاده کنید مثل:
PHP:
SELECT keyword.id, table2.link FROM `keyword` 
INNER JOIN table2 
ON table2.id=keyword.id 
WHERE (keyword.keyword LIKE '%SEARCH1%' OR keyword.keyword LIKE '%SEARCH2%') 
GROUP BY table2.link;
 

appledandy

Registered User
تاریخ عضویت
26 اکتبر 2010
نوشته‌ها
129
لایک‌ها
12
مثلا id=1 , keyword=google و id=2 , keyword=advance و search = google advance پیداکنه آی دی های 1 و 2
table2=site وتوی این تیبل جستجو کن و لینک تکراری رو حذف کنه
keyword_id=1 url_id=2
keyword_id=1 url_id=3
keyword_id=2 url_id=2
keyword_id=2 url_id=4
نشون بده
url_id=2
url_id=3
url_id=4
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
structure تیبل ها رو بگذاری بهتره منتها :
PHP:
SELECT table2.url_id FROM `table1` 
INNER JOIN table2 
ON table2.keyword_id=table1.id 
WHERE (table1.keyword LIKE '%google%' OR table1.keyword LIKE '%advance%') 
GROUP BY table2.url_id;
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
راستی اگر keyword داخل دیتابیس تک کلمه هست و تکرار و مشابه نداره این سریعتره:

PHP:
SELECT table2.url_id FROM `table1` 
INNER JOIN table2 
ON table2.keyword_id=table1.id 
WHERE (table1.keyword ='google' OR table1.keyword ='advance') 
GROUP BY table2.url_id;
 

appledandy

Registered User
تاریخ عضویت
26 اکتبر 2010
نوشته‌ها
129
لایک‌ها
12
راستی اگر keyword داخل دیتابیس تک کلمه هست و تکرار و مشابه نداره این سریعتره:

PHP:
SELECT table2.url_id FROM `table1` 
INNER JOIN table2 
ON table2.keyword_id=table1.id 
WHERE (table1.keyword ='google' OR table1.keyword ='advance') 
GROUP BY table2.url_id;
یه توضیح هم بدهید دیگه حل
 

appledandy

Registered User
تاریخ عضویت
26 اکتبر 2010
نوشته‌ها
129
لایک‌ها
12
راستی اگر keyword داخل دیتابیس تک کلمه هست و تکرار و مشابه نداره این سریعتره:

PHP:
SELECT table2.url_id FROM `table1` 
INNER JOIN table2 
ON table2.keyword_id=table1.id 
WHERE (table1.keyword ='google' OR table1.keyword ='advance') 
GROUP BY table2.url_id;
یه توضیح هم بدهید دیگه حل
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
کجاش رو توضیح بدم؟ دو تا تیبل رو join کردیم، دو تا کلمه سرچ شد، در صورتی که هر کدوم باشن نتیجه url_id برمیگرده که با GROUP نتایج تکراری یکی میشن.
 

appledandy

Registered User
تاریخ عضویت
26 اکتبر 2010
نوشته‌ها
129
لایک‌ها
12
یه پرسش دیگه برام پیش اومده لطفا اینم راهنمایی کنید ما توی اینپوت می نویسیم google advance با هم می نویسیم
چه جوری بفهمیم چندتا کلمه هست
چه جوری تو دیتابیس جستجو کنیم که از هم جدا بشن
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
تو برنامه نویسی متنها رو از space جداکنید و query رو بسازید
 

appledandy

Registered User
تاریخ عضویت
26 اکتبر 2010
نوشته‌ها
129
لایک‌ها
12
من با eplode نوشتم که هر وقت به فضای خالی رسید بریزه توی آرایه ولی چه جوری توی sql این رو بنویسم یعنی مثلا 3 تا آرایه شد چه جوری این کدی رو که دادی توی for بندازم چون syntax error میده
 
بالا