PDA

View Full Version : سوال: جستجو در چند تیبل متفاوت و کنترل خروجی



zoghal
جمعه 31 خرداد 1387, 16:31 عصر
ا سلام
من خیلی فروم رو گشتم اما اون جوابی که میخواستم رو پیدا نکردم

سوال اول

فرض کنید ما 4 تا تیبل داریم به شرح زیر

2 تیبل مربوط به خبر ها هر کدوم دارای 8 فیلد
1 تیبل مربوط به لینک دونی با 4 فیلد
1 تیبل هم مربوط به اعضا با 12 فیلد

در ظاهر میشه با یک کوئری تموم تیبل ها رو کنار هم گزاشت و شرط های جستجو رو اعمال کرد.

اما بعد از اجرای این کوئری یک نتیجه داریم. حال چون این نتیجه میتونه مربوط به هر بخش باشه و هر بخش از نظر لینک دهی یا نحوه نمایشش فرق دارند باهم. پس باید روی هر رکورد از این کوئری شرط بزارم.
اما چه طوری این شرط رو اعمال کنم نمی دونم . یعنی چه طور تشخیص بدم که این رکورد مربوط به کدام بخش هست که نحوه نمایشش رو کنترل کنم.


سوال دوم :

آیا از fulltext استفاده کنم یا نه؟ تو فروم هر کسی یه نظری داده بودن با دلایل خاص خودشون


سوال سوم :

اگر امکان دارد یک نمونه کوئری که خودتون در پروژه هاتون استفاده کردید رو هم قرار بدید


درخواست :

لطفا برای بهینه شده . تجربیات خود را در اختیارم بزارید در این مورد


ممنون
سوزنچی

zoghal
جمعه 31 خرداد 1387, 16:35 عصر
این هم ساختار تیبل ها

در نظر داشته باشید که هیچ کدام از تیبل ها باهم رابطه ندارند


-- Table "news"

CREATE TABLE `news` (
`News_Id` int(11) NOT NULL auto_increment,
`News_Title` varchar(255) collate utf8_persian_ci NOT NULL,
`News_Text` longtext collate utf8_persian_ci NOT NULL,
`News_Text1` longtext collate utf8_persian_ci,
`News_Hits` int(11) default '0',
`News_Date` date default NULL,
PRIMARY KEY (`News_Id`)
) ENGINE=MyISAM AUTO_INCREMENT=42 DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;


CREATE TABLE `layout` (
`News_Id` int(11) NOT NULL auto_increment,
`News_Title` varchar(255) collate utf8_persian_ci NOT NULL,
`News_Text` longtext collate utf8_persian_ci NOT NULL,
`News_Text1` longtext collate utf8_persian_ci,
`News_Hits` int(11) default '0',
`News_Date` date default NULL,
`News_Cat` int(11) default NULL,
PRIMARY KEY (`News_Id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;



CREATE TABLE `emphatic` (
`Emphatic_Id` int(11) NOT NULL auto_increment,
`Emphatic_Source` varchar(255) collate utf8_persian_ci NOT NULL,
`Emphatic_Text` longtext collate utf8_persian_ci NOT NULL,
PRIMARY KEY (`Emphatic_Id`)
) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;

sma_mohseni
شنبه 01 تیر 1387, 10:24 صبح
1- اگه هیچ فیلدی نداری که مشخص کننده بخش باشند ، به نظر میرسه نمیتونی با یک کوئری کارتو انجام بدی
2- اگه شما میخواهی نتایج را بصورت دسته بندی شده نمایش بدی(یعنی اول نتایج بخش 1 بعد بخش 2 و ...) خوب یه حلقه بزار و بعد همان کوئری خاص را اجرا کن . ایندفعه میدونی هر نتیجه مربوط به کدوم بخشه

zoghal
شنبه 01 تیر 1387, 17:43 عصر
دقیقا من هم به این نتیجه رسیدم. منتها گفتم شاید راه دیگری داشته باشه. به هر حال مرسی