Life is a life... We are the humans...
помогите написать простенький поисковик по полям в бд (mysql)... поля в разных таблицах, при этом надо результат отсортировать по релевантности (то есть не просто выбор table.field LIKE %sometext% table2.field2 LIKE %sometext%, а что-то умнее)...
и ещё, как делать поиск по найденному? хранить поля, в которых поиск уже был, очень нехочется...
есть таблица table1 с полями id, ...
есть таблица table2 с полями id, parent, status, ...
надо выбрать поля из table1 такие, что table2.parent = table1.id, table2.status = 1;
только записей в table2 c полем parent равным id может быть не одна, но поля table1 должны быть выбраны только один раз (то есть LIMIT 1 не катит, т.к. LIMIT здесь отрежет следующие строки в table1).. и сделать это всё за один запрос...
бд mysql, язык php... особенно меня интерисует поиск по найденому)
и ещё, как делать поиск по найденному? хранить поля, в которых поиск уже был, очень нехочется...
есть таблица table1 с полями id, ...
есть таблица table2 с полями id, parent, status, ...
надо выбрать поля из table1 такие, что table2.parent = table1.id, table2.status = 1;
только записей в table2 c полем parent равным id может быть не одна, но поля table1 должны быть выбраны только один раз (то есть LIMIT 1 не катит, т.к. LIMIT здесь отрежет следующие строки в table1).. и сделать это всё за один запрос...
бд mysql, язык php... особенно меня интерисует поиск по найденому)
По поводу второго пока думаю.
второй кстати по идее решается SELECT DISTINCT или LEFT JOIN тока я ещё не тестил...
FROM (
SELECT table1.*, table2.status
FROM table1
LEFT JOIN table 2 ON table2.parent=table1.id
WHERE table2.status=1)
WHERE ...
?
лан, на релевантность можно забить.. а как поиск в найденном делать??
2) если мускуль ниже четвёрки или метод 1) не катит, то или хранить результаты во временной таблице с последующей выборкой, или организовывать подобие двухшаговой формы, где "искать в найденном" - аналог второго шага. при этом данные исходного поиска выбираются каждый раз, а если надо, то сохраняются потом в массиве, который просматривается на присутствие "искать в найденном"
временных таблиц слишком много прийдётся создавать, поиск по разным таблицам идёт... хотя хороший вариант...
вот последний вариант неплохой..
сенкс...
1) если мускуль версии 4+, то обвесить вышеописанный запрос ещё одним селектом с параметрами "что найти в найденном". если прокатит.
ну вроде же UNION как раз селекты и объединяет...
хм) ок... *ушёл читать ман*