SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.05.2011 17:27:31

mixamz
Участник
Зарегистрирован: 18.05.2011
Сообщений: 3

Сложный запрос из БД + Вывод

Здравствуйте!

У меня есть 4 таблицы, в которых я хочу найти определенные совпадения по нескольким полям. Вот запрос -


@$zap_poi = "SELECT cont.id,content.id,contenten.id,news.id_n FROM cont, content, contenten, news WHERE cont.naz LIKE '%$poisk_slovo%' OR cont.text LIKE '%$poisk_slovo%' OR content.text LIKE '%$poisk_slovo%' OR contenten.text LIKE '%$poisk_slovo%' OR news.naz LIKE '%$poisk_slovo%' OR news.naz_en LIKE '%$poisk_slovo%' OR news.text LIKE '%$poisk_slovo%' OR news.text_en LIKE '%$poisk_slovo%'";
 


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

Неактивен

 

#2 18.05.2011 18:32:02

Lem0nti
Гуру
Откуда: Северная Пальмира
Зарегистрирован: 08.11.2007
Сообщений: 98

Re: Сложный запрос из БД + Вывод

mixamz написал:

правилен ли он

Правильно ли я понимаю, что вы даже не прогоняли этот запрос?

Отредактированно Lem0nti (18.05.2011 18:32:17)

Неактивен

 

#3 18.05.2011 18:43:30

mixamz
Участник
Зарегистрирован: 18.05.2011
Сообщений: 3

Re: Сложный запрос из БД + Вывод

Прогонял. При наличии в базе искомого слова выдается куча всего. в том числе и правильный результат. я просто еще вывода не могу понять!

Неактивен

 

#4 19.05.2011 02:41:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Сложный запрос из БД + Вывод

Не куча всего, а строки, которые совпадают с этим словом хотя бы одним полем.
Устроит такой вариант ответа?

Неактивен

 

#5 19.05.2011 11:49:53

mixamz
Участник
Зарегистрирован: 18.05.2011
Сообщений: 3

Re: Сложный запрос из БД + Вывод

нет не совсем. Я понимаю Вас прекрасно, что надо идти и оканчивать курсы. Но рздел вроде так и называется "Для начинающих". а такого рода запросов и вывода его результатов не нашел ни на одном форуме включая Ваш - все ограничиваются простыми запросами с одним-двумя условиями или с поиском по одной таблице.

Ну да ладно, а подскажите тогда пожалуйста как мне составить запрос.

Есть 4 таблицы (t1, t2, t3, t4): у первых трех из них ключевое поле `id` у четвертой `id_n`, у первых трех поле по которому необходимо искать - `text`, у четвертой их два - `text` и  `text2`. Сам поисковый запрос состоит из строки (например три слова - s1,s2,s3).

Задача: в одном запросе по каждому из слов поискового запроса опросить 4 таблицы и при наличии совпадения вывести id или id_n найденой записи. ну и вывести название таблицы в которой это совпадение найдено.

Неактивен

 

#6 19.05.2011 19:21:40

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Сложный запрос из БД + Вывод

Я ничего не говорил про курсы, я просто описал то, что делает запрос smile

Судя по описанию, Вы хотите нечто такое:
SELECT 't1' AS tablename, id FROM t1 WHERE `text` LIKE '%word%'
UNION
SELECT 't2' AS tablename, id FROM t2 WHERE `text` LIKE '%word%'
UNION
...

При наличии полнотекстового индекса (желательно) нужно переписать
запрос в виде WHERE MATCH (`text`) AGAINST ('word1 word2')

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson