Есть две таблицы с множеством полей необходимо осуществить поиск по двум полям из первой таблицы Имя объекта, Адрес и одному полю второй таблицы Город по русски.
В первой таблице идет поиск по полю name если оно подпадает под Like то включаем в выборку, тоже самое по адресу.
Далее идет поиск по второй таблице table2.gorodru если совпадения(частичное) найдены то необходимо получить поле table2.goroden соответсвующий всем записям в этой таблице 2.
И потом прибавить к первой выборке всю выборку из таблицы один, у которой тоже table1.goroden =table2.goroden.
Потом удалить повторяющиеся.
Например
Вводим "Мос" поиск по нозванию объекта и возможно адресу в Т1 дает нам записаи Объект МосЭнергоСтрой, Объект АБВ (у него адрес ул. Московская). Далее выбираем из таблицы 2 по городам это будет Москва, Ну еще какойнибуть город на МОС.
Постарался объяснить как мог, поподробнее.
Спустя 9 минут, 33 секунды (29.04.2011 - 22:08) Xes написал(а):
Допер пока как объеденит интересующею меня информацияю для поиска в одну таблицу.
Так если добавил gorodru к первой таблице теперь можно из этой виртуальной таблицы все найти, но воложеные запросы не поддерживаются как быть?
SELECT name, adres, goroda.gorodru FROM hotels LEFT JOIN goroda ON hotels.goroden=goroda.goroden
Так если добавил gorodru к первой таблице теперь можно из этой виртуальной таблицы все найти, но воложеные запросы не поддерживаются как быть?
SELECT name, adres, goroda.gorodru FROM hotels LEFT JOIN goroda ON hotels.goroden=goroda.goroden
Спустя 35 минут, 22 секунды (29.04.2011 - 22:43) Лена написал(а):
SELECT tbl1.object,tbl1.adress,tbl2.city
FROM table1 tbl1
INNER JOIN table2 tbl2 ON tbl1.city = tbl2.city
WHERE tbl1.object LIKE '%$object%'
OR tbl1.adress LIKE '%$adress%'
OR tbl2.city LIKE '%$city%'
$object,$adress,$city - значения, которые проверяете при поиске
Спустя 11 минут, 42 секунды (29.04.2011 - 22:55) Xes написал(а):
Спасибо
я тут методом тыка нарыл такой способ, собственно он был переделан из ранее мне подсказенного для одной таблицы.
Просто не знал что where можно юзать c ON - Думал что ON это и есть условие.
А что это за запись FROM table1 tbl1 и table2 tbl2 почему не просто tbl1 - таблица 1?
я тут методом тыка нарыл такой способ, собственно он был переделан из ранее мне подсказенного для одной таблицы.
Просто не знал что where можно юзать c ON - Думал что ON это и есть условие.
SELECT hotels.*, goroda.gorodru FROM hotels LEFT JOIN goroda ON
(hotels.goroden=goroda.goroden) where (concat(goroda.gorodru, name, adres) like '%Мос%')
А что это за запись FROM table1 tbl1 и table2 tbl2 почему не просто tbl1 - таблица 1?
Спустя 10 часов, 31 минута, 1 секунда (30.04.2011 - 09:26) Xes написал(а):
Подскажите порыл в книжках в инете не где не увидел такой записи
LEFT JOIN ON where
Собственно получаеться объедение таблиц по ключу, подстановка в левую таблицу правой если есть соответсвие, а дальше выборка из этой общей таблицы.
Вобщем то работает наскольо я смог в этом убедиться и похоже верно, но ни в каких книжках нет этого. Можно юзать?
LEFT JOIN ON where
Собственно получаеться объедение таблиц по ключу, подстановка в левую таблицу правой если есть соответсвие, а дальше выборка из этой общей таблицы.
Вобщем то работает наскольо я смог в этом убедиться и похоже верно, но ни в каких книжках нет этого. Можно юзать?
Спустя 29 минут, 29 секунд (30.04.2011 - 09:55) Nikitian написал(а):