|
|
|
| Всем привет. Нужно сделать поиск по двум полям из разных таблиц. Сделал так:
$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`.
Заранее спасибо!!! | |
|
|
|
|
|
|
|
для: grafen
(27.04.2012 в 10:40)
| | нужны отдельные поля для названия и для характеристик (в данном случае объем), называется это расширенный поиск | |
|
|
|
|
|
|
|
для: Valick
(27.04.2012 в 12:41)
| | Т.е. в таблице с объемами создать поле, в котором будет храниться полное название (группа + разновидность) и искать по этому полю? | |
|
|
|
|
|
|
|
для: grafen
(27.04.2012 в 14:38)
| | нет, вы что ни разу не видели на сайте расширенный поиск? форма поиска должна состоять не из одного поля, а из двух и более | |
|
|
|
|
|
|
|
для: Valick
(27.04.2012 в 16:06)
| | Так это не удобно. Тут логично в одном поле вбивать же...
Есть возможность построить так запрос, чтобы получить то, что мне нужно? Или это нереально? | |
|
|
|
|
|
|
|
для: 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."%'
|
| |
|
|
|
|
|
|
|
для: dim0s
(30.04.2012 в 02:48)
| | а серверу прикажите "повесится" с таким запросом?
____
и я не уверен на счет LEFT JOIN, мне кажется там нужен просто JOIN
опять же есть сомнения, что выборка не будет зависеть от расположения искомых слов | |
|
|
|
|
|
|
|
для: Valick
(30.04.2012 в 07:51)
| | Ну что Вам сказать. Работает вообщем такая конструкция у меня давно. Сервер не виснет. Ну а так то вроде все просто, обьеденяем в одну строку и ищем по ней. Предложил как вариант, не подходит, ну и ладно. | |
|
|
|
|
|
|
|
для: dim0s
(30.04.2012 в 12:25)
| | сколько у вас строк в таблице? отношение таблиц "один ко многим"? | |
|
|
|
|
|
|
|
для: Valick
(30.04.2012 в 12:28)
| | Ну да, тут Вы правы наверное. У меня-то один к одному. Может в этом случае и не подойдет. | |
|
|
|
|
|
|
|
для: dim0s
(30.04.2012 в 12:31)
| | там действительно проще создать дополнительное поле
но все равно это будет "через опу"
а вообще автору топика не плохо было бы почитать про дизайн интерфейса, про эргономику и тд. тогда станет ясно что логично | |
|
|
|