MySQL поиск по нескольким таблицам и в одной таблице поиск по нескольким столбцам - PullRequest
0 голосов
/ 13 июня 2019

Я построил запрос для поиска одного значения по нескольким таблицам.Он отлично работает, как есть, но я хочу найти несколько полей в таблице «клиенты» («last_name» и «company_name» дополнительно).

$sql = "SELECT first_name as name FROM customers WHERE first_name LIKE '%" . $keyword . "%'
        UNION
        SELECT name as name FROM events WHERE name LIKE '%" . $keyword . "%'
        UNION
        SELECT product_name as name FROM products WHERE product_name LIKE '%" . $keyword . "%'";

Нужно ли просто добавить больше отдельных строк для каждого дополнительного полякак так?

"SELECT first_name as name FROM customers WHERE first_name LIKE '%" . $keyword . "%'
    UNION
SELECT last_name as name FROM customers WHERE last_name LIKE '%" . $keyword . "%'
    UNION
SELECT company_name as name FROM customers WHERE company_name LIKE '%" . $keyword . "%'

Это не кажется самым эффективным, поэтому хотел проверить.Спасибо!

1 Ответ

0 голосов
/ 13 июня 2019

Есть эффективное решение.Поскольку вы собираете только имя, вы собираете их в три разные переменные.и используя бэкэнд-язык, вы объединяете эти 3 массива.

    example for php, 
    $sql1 = "SELECT first_name as name FROM customers WHERE first_name LIKE '%" . $keyword . "%'; 
    //getting first array result by this query
    $sql2 = "SELECT name as name FROM events WHERE name LIKE '%" . $keyword . "%'";
    //getting second array result by this query
    $sql3 = "SELECT product_name as name FROM products WHERE product_name LIKE '%" . $keyword . "%'"; 
    //getting third array result by this query

    $result = array_merge($sql1, $sql2, $sql3)

Это решение будет применимо, если вы сможете управлять данными с помощью вашего бэкэнд-языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...