سرچ در دیتابیس MySQL ?
من یک جدول دارم بدین شکل:
| tags | text | id |
| آموزش , اطلاعات عمومی , علمی | متن تستی | 1 |
که توی فیلد tags چند مقدار وجود داره که با کاما از هم جدا شدن
میخوام وقتی وارد یک دسته شدم توی برنامه مثلا مطلب آموزشی ، رکوردهایی از جدول که دارای تگ آموزش هستندرو نشون بده.
چطور این query رو انجام بدم؟
با سرچی که توی نت کردم به این نتایج رسیدم البته قبلا alu هم گفته بود اما نمیدونم چرا حواسم نبود!! :)
روش اول :
WHERE tags LIKE '%myTag%'
روش دوم:
SELECT * FROM mytable WHERE FIND_IN_SET(' عاشقانه', CONCAT(' ', tags)) > 0;
http://answers.uncocoder.com/question/1131
نرمال سازی معمولا برای برنامه نویس کار رو یکم زمانبر تر میکنه (شاید یک ساعت بیشتر) ولی سرعت برنامه برای کار با دیتابیس بالاتر میره
نرمال سازی در سطح یک میشه این "هیچ سلولی قابل تجزیه با سلول های دیگر نباشد"
که در مورد شما هست ، یعنی تگ خودش از چند مورد تشکیل شده مثلا این جدول هم نرمال نیست
| name | id |
| mojtaba yeganeh | 1 |
شکل نرمال شده میشه این
| lastname | name | id |
| yeganeh | mojtaba | 1 |
رعایت کردن این موارد بسیار کار را راحت تر میکنه ، هرچند برای شروعش یکم زمانبر هست ، مثلا تو مورد شما باید 3 تا جدول بسازید یکی محتوا ، یکی Tags , یکی رابط
جدول اول
| text | id |
| my text | 1 |
حالا یه جدول واسه ذخیره ی تگ ها نیاز دارید ، الان خوبیش اینه که هر وقت نیاز بود میتونید هزار تگ اضافه کنید
| tag | id |
| tutorial | 1 |
حالا یه جدول رابط نیاز دارید نشون بده کدوم آیدی در جدول محتوا ، به کدوم ( ها ) در جدول tag مرتبط هست ، در واقع یک نشانگر عددی به جای پردازش متن که بسیار زمانگیر هست
| tag_id | text_id | id |
| 1 | 1 | 1 |
یعنی متنی که ایدی یک داره ، به تگی که ایدیش یکه وصله ، حالا ممکنه متن شما 100 تا تگ داشته باشه ، مهم نیست ، فقط جدول رابط ثبتشون میکنه ، توضیحات بیشتر تو لینک ، اونم توضیحات خودمه + چند تا سایت ، برای توضیح سطوح بالا تر :|
ممنون بابت راهنماییتون
هر کاری کردم نشد
برای یک جدول کد پایینی رو نوشم
هر دوتا جدول fav دارن میخوام هر سطر از دوتا جدول که fav اون برابر 1باشه رو برام نمایش بده
query = "SELECT * FROM table1 WHERE (fav=1)";
این نوع کوئری میتونه کمکتون کنه
SELECT Table1.Column1 , Table2.Column1 [,Table3.Column1 ...]
FROM Table1,Table2 [,Table3.Column1 ...]
WHERE Table1.Column1==Table2.Column1 [AND OR ... other Conditions]
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .