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

Форум MySQL

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

 

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

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

тема: Поиск по двум таблицам, объединить поисковый запрос
 
 автор: grafen   (27.04.2012 в 10:40)   письмо автору
 
 

Всем привет. Нужно сделать поиск по двум полям из разных таблиц. Сделал так:

$query="(SELECT name FROM tovarplus WHERE name LIKE '%".$word."%') UNION (SELECT name FROM tovar WHERE name LIKE '%".$word."%')";
$sql = mysql_query($query) or die("Запрос ошибочный");


В таблице `tovarplus` есть поле `idtovar`, которое содержит `id` записи из таблицы `tovar` - таким образом они пересекаются. Т.е. в таблице `tovar` хранится общее название группы, допустим "Молоко `Грустный молочник`", а в `tovarplus` хранятся разновидности, такого вида - "0,5 л.", "1 литр", "2 литра".

Как сделать так, чтобы если в поиске ввели "молоко 1 литр", вывелась бы запись из таблицы `tovarplus`.

Заранее спасибо!!!

  Ответить  
 
 автор: Valick   (27.04.2012 в 12:41)   письмо автору
 
   для: grafen   (27.04.2012 в 10:40)
 

нужны отдельные поля для названия и для характеристик (в данном случае объем), называется это расширенный поиск

  Ответить  
 
 автор: grafen   (27.04.2012 в 14:38)   письмо автору
 
   для: Valick   (27.04.2012 в 12:41)
 

Т.е. в таблице с объемами создать поле, в котором будет храниться полное название (группа + разновидность) и искать по этому полю?

  Ответить  
 
 автор: Valick   (27.04.2012 в 16:06)   письмо автору
 
   для: grafen   (27.04.2012 в 14:38)
 

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

  Ответить  
 
 автор: grafen   (27.04.2012 в 16:13)   письмо автору
 
   для: Valick   (27.04.2012 в 16:06)
 

Так это не удобно. Тут логично в одном поле вбивать же...
Есть возможность построить так запрос, чтобы получить то, что мне нужно? Или это нереально?

  Ответить  
 
 автор: dim0s   (30.04.2012 в 02:48)   письмо автору
 
   для: grafen   (27.04.2012 в 16:13)
 

Думаю вот что-то типа:

SELECT 
   tovar.*,
  tovarplus.*,
  CONCAT(tovar.name,' ',tovarplus.name) AS search_str 
  FROM tovar LEFT JOIN tovarplus USING (idtovar)
  WHERE search_str LIKE '%".$word."%'

  Ответить  
 
 автор: Valick   (30.04.2012 в 07:51)   письмо автору
 
   для: dim0s   (30.04.2012 в 02:48)
 

а серверу прикажите "повесится" с таким запросом?
____
и я не уверен на счет LEFT JOIN, мне кажется там нужен просто JOIN
опять же есть сомнения, что выборка не будет зависеть от расположения искомых слов

  Ответить  
 
 автор: dim0s   (30.04.2012 в 12:25)   письмо автору
 
   для: Valick   (30.04.2012 в 07:51)
 

Ну что Вам сказать. Работает вообщем такая конструкция у меня давно. Сервер не виснет. Ну а так то вроде все просто, обьеденяем в одну строку и ищем по ней. Предложил как вариант, не подходит, ну и ладно.

  Ответить  
 
 автор: Valick   (30.04.2012 в 12:28)   письмо автору
 
   для: dim0s   (30.04.2012 в 12:25)
 

сколько у вас строк в таблице? отношение таблиц "один ко многим"?

  Ответить  
 
 автор: dim0s   (30.04.2012 в 12:31)   письмо автору
 
   для: Valick   (30.04.2012 в 12:28)
 

Ну да, тут Вы правы наверное. У меня-то один к одному. Может в этом случае и не подойдет.

  Ответить  
 
 автор: Valick   (01.05.2012 в 17:48)   письмо автору
 
   для: dim0s   (30.04.2012 в 12:31)
 

там действительно проще создать дополнительное поле
но все равно это будет "через опу"
а вообще автору топика не плохо было бы почитать про дизайн интерфейса, про эргономику и тд. тогда станет ясно что логично

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

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