Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как проводить полнотекстовый поиск по двум таблицам?
 
 автор: AN   (04.10.2010 в 23:10)   письмо автору
 
 

Добрый день, есть две таблицы, в каждой по 3 поля объединены в полнотекстовый, как можно сделать чтобы поиск осуществлялся по двум таблицам одновременно? то есть полнотекстовый по 6 полям в 2-х таблицах?

Спасибо!

  Ответить  
 
 автор: heed   (05.10.2010 в 01:07)   письмо автору
 
   для: AN   (04.10.2010 в 23:10)
 

(SELECT....)
UNION
(SELECT ....)
ORDER BY .... LIMIT ....;

лучше просто два запроса, сначала к одной таблице, а потом к другой.

  Ответить  
 
 автор: AN   (05.10.2010 в 01:33)   письмо автору
 
   для: heed   (05.10.2010 в 01:07)
 

а можно по подробнее? как объединить по ID ? то есть чтобы не было дубликатов, то есть первая таблица - компания, с описанием ее деятельности, а вторая таблица - ее коммерческие объявления, и нужно найти или тут или тут и вывести ссылку или на компанию или на ее объявление ...
как это лучше сделать? чтобы не мучить клиента вопросами "где искать" а чтобы искало и там и там ?

  Ответить  
 
 автор: heed   (05.10.2010 в 02:08)   письмо автору
 
   для: AN   (05.10.2010 в 01:33)
 

лично мне пока трудно так сходу сообразить какое-нибудь самое оптимальное решение :)
>как объединить по ID ?
объединить как-раз не вяжется с тем что выводится или одно или другое

самое удобное для клиента наверное вывести несколько ссылок из первой таблицы с указанием всего там найденного колличества и предложением показать все результаты.
И чуть дальше результаты второй таблицы (их, как я понял, обычно больше) c такой-же информацией и навигацией.
Или станет возможен показ на первой странице только из одной таблицы

  Ответить  
 
 автор: AN   (05.10.2010 в 20:42)   письмо автору
 
   для: heed   (05.10.2010 в 02:08)
 

дело такое:

есть таблица КЛИЕНТЫ с полями
/ ID клиент / название / описание / ключевые слова /

и есть таблица ОБЪЯВЛЕНИЯ

/ ID / ID клиент / название / описание / ключевые слова /

в каждой таблице будет индекс по трем полям - / название / описание / ключевые слова /

таблицы связаны по - ID клиент

вот я хочу сделать, чтобы поиск был сразу по двум таблицам, и дубликаты не выводились, то есть если найдет и объявление и клиента этого объявления - выводить объявление

а если найдет только клиента - выводить клиента

и это все как то в один список, можно ли обойтись без отдельных запросов в разные таблицы?

  Ответить  
 
 автор: heed   (06.10.2010 в 00:23)   письмо автору
 
   для: AN   (05.10.2010 в 20:42)
 

у меня получается только что-то сильно запутанное, скорее всего медленное, похоже на такое
SELECT IFNULL(ft2.id, 0) , IFNULL(ft2.p_id, ft1.id), IFNULL(ft2.txt, ft1.txt) FROM ft1 LEFT JOIN ft2 ON ft2.p_id=ft1.id
WHERE ft2.txt='text' OR ft1.txt='text';

даже сомневаюсь стоит-ли такое пробовать сравнить с чем-нибудь другим
// особенно безобразно со всеми этими IFNULL()

  Ответить  
 
 автор: AN   (06.10.2010 в 01:21)   письмо автору
 
   для: heed   (06.10.2010 в 00:23)
 

может имеет смысл таки делать 2 запроса в две таблицы и придумать как показывать результаты? или же формировать сводную таблицу при записи и изменении?

  Ответить  
 
 автор: AN   (10.10.2010 в 19:51)   письмо автору
 
   для: AN   (06.10.2010 в 01:21)
 

а если сделать временную таблицу куда будут записаны результаты поиска их трех таблиц, нужным образом сгруппированы и отсеяны, и с этой таблицы делать вывод, как можно привязать эту временность к сессии, чтобы отследить когда пользователь ушел и удалить эти временные результаты из этой таблицы?

  Ответить  
 
 автор: heed   (10.10.2010 в 21:55)   письмо автору
 
   для: AN   (10.10.2010 в 19:51)
 

Это не совсем про временные таблицы, Те временные таьлицы что создаются запросом CREATE TEMPORARY TABLE ....; живут пока живёт соединение (время работы php-скрипта, если используются обычные соединения).
Такое впринципе реализуемо, но требует создания и удаленния обычных таблиц вручную,
если автоматизировать создание/удаление на стороне php при помощи session_set_save_handler() это + столько таблиц сколько живых сессий.

На стороне mysql тоже можно кое-чего автоматизировать каким-нибудь
CREATE EVENT e_name
ON SCHEDULE
EVERY 1 HOUR
.........
но такое ещё и требует чтобы была возможность управлять этими самыми EVENT.

Да и вообще будет-ли тогда выгода от того что запросов один вместо двух.
Лучше-уж тогда думать как ещё можно добиться чего-то похожего на те ifnull()

  Ответить  
 
 автор: AN   (10.10.2010 в 22:44)   письмо автору
 
   для: heed   (10.10.2010 в 21:55)
 

а если таблица постоянная, и вписывать результаты с ID сессии, а потом удалять?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования