Как правильно составить запрос?

Добрый день. Есть две таблицы, у них есть одинаковые колонки, мне нужно достать записи из двух таблиц в соответствии с входящими данными.
Делаю так:
SELECT name,phone,address FROM `psn` UNION SELECT name,phone,address FROM `office` WHERE `name` = '$zapros' OR `phone` LIKE '%$zapros%' OR `address` LIKE '%$zapros%'

В итоге, он мне выводит все записи из БД.

А я хочу так:
Есть строка поиска, хочу вывести результаты из БД, если name строго равен $zapros, если phone частично равен $zapros или адрес равен частично $zapros.
То есть, если что-то найдено, то вывести эти записи. Подскажите пожалуйста, как правильно составить запрос ? Спасибо.
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
WHERE в каждый запрос из UNION
( SELECT name,phone,address FROM `psn`
WHERE `name` = '$zapros' OR `phone` LIKE '%$zapros%' OR `address` LIKE '%$zapros%' )
UNION
( SELECT name,phone,address FROM `office`
WHERE `name` = '$zapros' OR `phone` LIKE '%$zapros%' OR `address` LIKE '%$zapros%' )


через подзапрос
SELECT * FROM (
    SELECT name,phone,address FROM `psn`
    UNION
    SELECT name,phone,address FROM `office`
) AS t
WHERE t.`name` = '$zapros' OR t.`phone` LIKE '%$zapros%' OR t.`address` LIKE '%$zapros%'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы