Название звучит довольно просто ... основная проблема заключается в том, с какого направления я должен запрашивать и как выводить результаты.Поиск MySQL в нескольких столбцах
Вот скриншот с пустым поиском:
клиентов всегда должны быть видны (соответствие поискового запроса). Так вот несколько примеров:
- Поиск проекта2 Выведите client2 с проекта2
- Поиск client2 Выведите client2 со всеми проектами
- Поиск client3 Выведите client3
я запросить проектов и присоединяться к таким клиентам:
SELECT *
FROM projects AS a
LEFT JOIN clients AS b ON a.client_id = b.id
WHERE a.name LIKE '%$searchString%' OR b.name LIKE '%$searchString%'
После этого я запрашиваю клиентов, исключая те, которые были выбраны в запросе выше. Это единственный способ (который я знаю), чтобы получить клиентов, у которых нет проектов.
Есть ли инструкция, которая может получить эти результаты по запросу? Это кажется мне не очень изящным. Также, если я выполняю поиск client2 project1, система выходит из строя.
EDIT: Спасибо за ответы до сих пор. Я получил много с полным объединением, которые невозможно в mysql. Я изменил это в заголовке и тегах вопроса ... извините за это. Я ничего не знал о полных соединениях и что они невозможны в mysql.
Попробуйте изменить 'ЛЕВЫЙ JOIN' в' FULL OUTER JOIN'. –
Или, наоборот, переключите порядок ваших таблиц, чтобы левое объединение включало нулевые проекты или сохраняло их в одном порядке и переключалось на правильное соединение. –